1、调用oracle存储过程时入参为中文时,入参类型定义须为VarChar类型,否则会乱码;
2、在查询数据的时候报“ORA-01861: literal does not match format string”或者“ORA-01861: 文字与格式字符串不匹配”这个错误。导致这个错误的原因是数据问题造成的,大部分都是因为时间格式的问题造成的;
3、调用存储过程传参时,输出参数必须放在最后,代码中参数赋值顺序须与存储过程保持一致;
4、存储过程有返回值,则必须给返回值赋值;
5、oralce数组索引从1开始;
6、调用存储过程时提示:OCI-22062: 输入字符串 [Ⅰ] 无效-,原因是因为定义的入参的数据类型与存储过程参数格式不一致;
7、两个日期相减默认获取间隔天数;
8、字符串转日期:to_date(字符串,'yyyy-mm-dd hh24:mi:ss'),其中hh24标识24小时制,不加24则标识12小时制;
9、字符拼接使用符号“||”
10、如果字段加密,查询出来插入其他表时会有问题
11、数据库修改表变量后,需重启webService变更的修改才会生效
12、oracle 临时表使用:(不建议使用,用起来很麻烦)
- on commit delete rows; 说明数据行只有在当前事务中可见,也是默认值,事务提交后数据行将消失;创建的是事务级临时表。
- on commit preserve rows; 说明数据行仅在当前会话中可见;创建的是会话级临时表。
在存储过程中使用临时表时:由于存储过程中不能直接使用DDL语言,需要先拼接好sql语句,执行sql语句对临时表进行操作
13、存储过程和方法中不建议where 。。in()条件查询,建议使用表变量
14、exception异常处理必须包含在begin。。。end块中
例:
for i in 1 .. 10 loop
BEGIN
if i =5 then
select patient_id
into str_sql
from wait_bed_pats
where wait_no = 123;
end if;
exception
when others then
o_ErrorInfo := o_ErrorInfo || i ||'-'||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE()||';';
continue;
end;
end loop;
15、业务逻辑复杂的流程,不建议使用存储过程中使用批量处理,影响数据库性能