WEB开发网
开发学院数据库Oracle 经验分享:Informix和Oracle存储过程的异同(二)... 阅读

经验分享: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 = s

-- 这个月的第一天

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;

上一页  1 2 

Tags:经验 分享 Informix

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接