您的位置:首页 > 数据库 > Oracle

Oracle新手注意点

2016-04-13 16:48 549 查看
管理方面:

1. SYS用户创建的表是无法为其创建触发器的。(会报错:ORA-04089)

2. 一个表最多只能有1000列.(oracle 在内部会把列数大于254列的行存储在多个单独的区段中)

3. ORA-02778: Name given for the log directory is invalid

    建立的DIRECTORY对应操作系统相应的目录文件夹,千万注意不要直接在操作系统删除这些文件夹,不然会出现上面的错误,数据库也会起不来.

4.ALTER TABLE为DDL操作,会自动提交,要注意。

5.子分区DROP后不会出现在回收站里。

开发方面: 

1. EXECUTE IMMEDIATE v_sql执行语句时,一定要注意变量v_sql里最后不要带分号(;).
declare
v_sql varchar2(1000);
v_ename varchar2(20);
begin
v_sql:='select empno from emp where rownum=1';--不能是v_sql:='select empno from emp where rownum=1;';
execute immediate v_sql into v_ename;
DBMS_OUTPUT.PUT_LINE(V_SQL);
end;
/


2.创建包时候,包头中声明的函数\存储过程要和包体中定义的一致

如:

某包头这样声明: function getArea(id in number) return number;

包体定义: function getArea(r in number) return number;--会报错,因为参数名不一样

3.存储过程中的变量VARCHAR2(包括存储过程参数)可以达到327060的长度,CLOB变量可以更长,但需要使用DBMS_LOB来处理,且注意要用

  dbms_lob.createtemporary(CLOB变量, true);来创建临时空间保存CLOB变量。

4.注意CHAR类型的特殊性,固定长度

相关建议:

1. 未知的异常处理建议放到客户端去控制,PLSQL里面不要有COMMIT和ROLLBACK等事务控制语句

2. 字段不要使用CHAR类型,它是固定长度且受字符集影响
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: