oracle存储同db2存储区别,Oracle與DB2存儲過程不同之處

文章主要描述的是Oracle數據庫與DB2存儲過程的不同之處,假如你對Oracle數據庫與DB2存儲過程的不同之處差異心存好奇的話,你就可以對以下的文章點擊觀看了,以下就是文章的詳細內容介紹,望大家借鑒。

Oracle與DB2存儲過程的差異

(1)存儲過程本質還是由SQL語句實現的,只不過可以添加邏輯性過程。

Oracle的存儲過程只了解其語法,最近在學DB2存儲過程。總覺得單獨去看它的語法什么的,沒什么效果。就拿一份項目中Oracle存儲過程文件對照着看,試着將其改成db2的。發現了幾點區別:

Create or replace procedure proname(var_in in number,var_out out number)

As

Var1 varchar2(18);

Var2 user.name%TYPE;

Begin

Var_out:=0;

Execute immediate ‘truncate table user’;

End

create procedure proname(in var_in int,out var_out int)

Declare var1 varchar(18);

Begin

Setvar_out=0;

End

(1) DB2中不支持”or replace”的語法;且參數名與IN/OUT的位置也需互換,聲明變量時須使用declare關鍵字,為變量賦值時須使用set關鍵字。

(2) 而對於Oracle中的%TYPE的功能,DB2中好像還沒有很好的實現方式。

(3) 同樣,Oracle中清空表的命令truncate,DB2也不能原樣引用,但它也提供了2種實現方式,一是將一空文件的內容導入表中import null.dat ;二是設置表的特性為不記錄日志alter table tablename .但是第二種方式會在某些情況下導致原表無法使用,具體的還沒弄清楚呢。

(4) 至於sql語句表現不同應該就是Oracle與db2各自的語法了。比如說Oracle的rownum,db2可以使用fetch first n only,或row_number() over()等。

當然,調用存儲過程的方法是一樣的,call proname(2,?),輸出參數用?來代替。

對於上面的第2點要想個好的解決方法,這種功能在DB2存儲過程中用的還是蠻多的。

acb86e2038865c66b724d7c26a78414a.gif

以上的相關內容就是對Oracle與DB2存儲過程的差異的介紹,望你能有所收獲。

PS:

%type說明

vempno emp.empno%type;

例如上面的這句話,

你的vempno就是你定義的變量,和面的那個emp是你數據庫里面存在的表,他的表里面有意個empno字段,然后%type就是empno的數據類型,

總體說這句話就是,讓vempno與你數據庫里面的表字段的屬性匹配,這個你就可以很方便的對emp進行操作了,不會因為類型不匹配而報莫名的錯誤。

簡單的說定義的這個存儲過程肯定是與這個表有一定關系的。方便操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值