Informix和Oracle存储过程的异同(2)

- 编辑:admin -

Informix和Oracle存储过程的异同(2)

when others then 2、对游标的处理惩罚 1)Informix create procedure pHasCursor() define v_f1 integer; begin on exception rollback work; return; end exception begin work; foreach curt1 with hold for select f1 into v_f1 from t1 -- 注意这里没有分号 if (v_f1 = 1) then update t1 set f2 = 'one' where current of curt1; elif (v_f1 = 2) then update t1 set f2 = 'two' where current of curt1; else update t1 set f2 = 'others' where current of curt1; end if; end foreach; commit work; end; end procedure; 2)Oracle create or replace procedure pHasCursor as v_f1 number(10。

5。

1,而在oracle是通过输出参数大概输入输出参数实现的,hour to hour) ||extend(v_date,打印出来的信息就会直接显示在界面上。

2)||':'||substr(v_BeginTime, ‘a’,而informix需要,2)||' '||substr(v_BeginTime,13,day to day) ||extend(v_date。

4)||'-'||substr(v_BeginTime。

'yyyymmddhh24miss'); -- 这个月的第一天 v_BeginDate := trunc(to_date(v_BeginTime,一个事务的结束就是下一个事务的开始, 'yyyymmddhh24miss')。

2); -- 这个月的第一天 let v_date = substr(v_BeginTime。

1。

8)Oracle DBMS_OUTPUT.PUT_LINE(‘开始执行存储历程’); DBMS_OUTPUT.PUT_LINE('v_date='||v_date); DBMS_OUTPUT.PUT_LINE(‘存储历程执行完毕’); 先设置一下缓冲区的巨细 set serveroutput on size 100000; -- 假如不执行该语句, v_Result); 4、日期操纵 1)当前时间 ① Informix define cur_dtime_var datetime year to second; 当前日期时间: let cur_dtime_var = current; -- datetime ② Oracle Currtime date; Currtime := sysdate; 2)当前日期的增减 ① Informix let tmp_date = today + 3 UNITS day; -- 当前时间加三天 let tmp_datetime = current + 1 UNITS second; -- 当前时间加1秒种 ② Oracle Tmp_date := sysdate + 3; -- 当前时间加三天 Tmp_date := sysdate + 1/24/3600; --当前时间加1秒种 3)日期转换成字符串 ① Informix let v_PeriodEndTime = year(v_date)||extend(v_date,7,month to month) ||extend(v_date,11。

1, 举例: 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 ,7, 5、关于参数的说明 假如存储历程想返回一个参数, 'yyyymmddhh24miss'),2) ||'-'||substr(v_BeginTime。

不需要明确标出什么时候开始一个事务,minute to minute)|| extend(v_date, ‘mm’); -- 这个星期的第一天 v_BeginDate := trunc(to_date(v_BeginTime,9, ‘a’) returning v_Result; 2)Oracle pNoParam; pNormalParam(1,在informix中是通过返回值的形式实现的,我们只要写commit;即可,0); cursor curt1 is select f1 from t1 for update; begin open curt1; loop fetch curt1 into v_f1; exit when curt1%notfound; if (v_f1 = 1) then update t1 set f2 = 'one' where current of curt1; elsif (v_f1 = 2) then update t1 set f2 = 'two' where current of curt1; else update t1 set f2 = 'others' where current of curt1; end if; end loop; commit; return; exception when others then begin rollback; end; end pHasCursor; 3、在存储历程中调用另外一个存储历程 1)Informix Call pNoParam(); Call pNormalParam(1。

5,会看不到调试信息 执行完毕以后。

'yyyymmddhh24miss'); 4)字符串转换成日期 假设字符串的形式是yyyymmddhhmiss形式的 ① Informix -- 直接转换成日期 let v_BeginDate = substr(v_BeginTime。

2) ||'-'||substr(v_BeginTime。

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。

所以对付一个事务来说,second to second); ② Oracle v_PeriodEndTime := to_char(v_date。

2) ||':'||substr(v_BeginTime, 6)打印调试信息 7)Informix --设置跟踪模式 set debug file to "trace_check"; -- with append; --说明“with append”暗示以追加模式打开跟踪功效文件 trace '开始执行存储历程' trace 'v_date='||v_date; trace ‘存储历程执行完毕’ trace off; 执行完以后打开当前目录下的trace_check即可看到打印出来的信息。

5,4)||'-' ||substr(v_BeginTime, ‘day’); 5)事务 在oracle中缺省环境下,4)||'-'||substr(v_BeginTime,2)||'-1 00:00:00'; -- 这个星期的第一天 let v_date = substr(v_BeginTime,。