oracle

//编码方式查看及修改

//查看oracle数据库的编码
SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';
//oracle客户端编码
SQL> select * from nls_instance_parameters where parameter='NLS_LANGUAGE';
//修改字符集
1.首先以sysdba的身份登录上去 conn /as sysdba
2.关闭数据库shutdown immediate;
3.以mount打来数据库,startup mount
4.设置session
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
5.启动数据库
alter database open;
6.修改字符集
ALTER DATABASE CHARACTER SET ZHS16GBK;
这会可能会报错,提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
这条语句就可以了,TERNAL_USE提供的帮助就会使oracle绕过了子集与超集的验证,这条语句和上面的语句内部操作时完全相同的。
7.关闭,重新启动
SQL>shutdown immediate;
SQL> startup
1.建立用户及权限:

--创建用户及设置权限。
create user aq identified by aq;
grant connect,resource,aq_administrator_role,unlimited tablespace to aq;
grant create database link to aq;
grant execute on dbms_aq to aq;
grant execute on dbms_aqadm to aq;
begin
dbms_aqadm.grant_system_privilege('ENQUEUE_ANY', 'aq', FALSE);
dbms_aqadm.grant_system_privilege('DEQUEUE_ANY', 'aq', FALSE);

8 创建和删除存储过程
创建存储过程,需要有CREATE PROCEDURE 或CREATE ANY PROCEDURE的系统权限。
CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型……)]
{AS|IS}
[说明部分]
BEGIN
可执行部分
[EXCEPTION 错误处理部分]
END [过程名];
表8-1 参数的类型
IN 定义一个输入参数变量,用于传递参数给存储过程
OUT 定义一个输出参数变量,用于从存储过程获取数据
IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
参数的定义形式和作用如下:
参数名IN 数据类型DEFAULT 值;定义一个输入参数变量,用于传递参数给存储过程。在调用存储过程 时,主程序的实际参数可以是常量、有值变量或表达式等。DEFAULT 关 键字为可选项,用来设定参数的默认值。如果在调用存储过程时不指明参 数,则参数变量取默认值。在存储过程中,输入变量接收主程序传递的 值,但不能对其进行赋值。
参数名OUT 数据类型; 定义一个输出参数变量,用于从存储过程获取数据,即变量从存储过 程中返回值给主程序。

原文地址:https://www.cnblogs.com/lovenannan/p/9472842.html