经验分享:Informix和Oracle存储过程的异同(二)
2008-10-25 12:57:41 来源:WEB开发网-- 这个月的第一天
let v_date = substr(v_BeginTime,1,4)||’-’
||substr(v_BeginTime,5,2)||’-1 00:00:00’;
-- 这个星期的第一天
let v_date = substr(v_BeginTime,1,4)||’-’||substr(v_BeginTime,5,2)
||’-’||substr(v_BeginTime,7,2)||’ 00:00:00’;
let v_week = weekday(v_date);
let v_date = v_date - v_week UNITS day;
② Oracle
-- 直接转换成日期
v_BeginDate := to_date(v_BeginTime, ’yyyymmddhh24miss’);
-- 这个月的第一天
v_BeginDate := trunc(to_date(v_BeginTime, ’yyyymmddhh24miss’), ‘mm’);
-- 这个星期的第一天
v_BeginDate := trunc(to_date(v_BeginTime, ’yyyymmddhh24miss’), ‘day’);
5)事务
在oracle中缺省情况下,一个事务的结束就是下一个事务的开始,所以对于一个事务来说,我们只要写commit;即可,不需要明确标出什么时候开始一个事务,而informix需要。
6)打印调试信息
7)Informix
--设置跟踪模式
set debug file to "trace_check"; -- with append;
--说明“with append”表示以追加模式打开跟踪结果文件
trace ’开始执行存储过程’
trace ’v_date=’||v_date;
trace ‘存储过程执行完毕’
trace off;
执行完以后打开当前目录下的trace_check即可看到打印出来的信息。
8)Oracle
DBMS_OUTPUT.PUT_LINE(‘开始执行存储过程’);
DBMS_OUTPUT.PUT_LINE(’v_date=’||v_date);
DBMS_OUTPUT.PUT_LINE(‘存储过程执行完毕’);
先设置一下缓冲区的大小
set serveroutput on size 100000; -- 如果不执行该语句,会看不到调试信息
执行完毕以后,打印出来的信息就会直接显示在界面上。
5、关于参数的说明
如果存储过程想返回一个参数,在informix中是通过返回值的形式实现的,而在oracle是通过输出参数或者输入输出参数实现的。
举例:
1)Informix:
create procedure p1() returning integer;
return 0;
end procedure;
2)oracle:
create or replace procedure p1(x out number)
as
begin
x := 0;
end p1;
6、赋值
1)informix
let v_1 = 100;
2)oracle
v_1 := 100;
7、if语句
1)informix
if (v_1 =100) then
elif (v_1=200) then
Else
end if;
2)oracle
if (v_1 =100) then
elsif (v_1=200) then
Else
end if;
更多精彩
赞助商链接