版主這是用sql語句寫的一個存儲過程﹐它在sqlserver中倒是可以﹐不過在oracle中就有
問題了
首先所有的變量都沒有了'@'標識符﹐直接用名稱即可
所有的賦值語句都為:= (例﹕變量Da:='aa')﹐select/set都不能做為賦值用
全局變量@@error不存在
錯誤提示語句RAISERROR('生成客户登记号失败!', 1, 2);
應該是RAISE_APPLICATION_ERROR(-20009,'生成客户登记号失败!')
問題了
首先所有的變量都沒有了'@'標識符﹐直接用名稱即可
所有的賦值語句都為:= (例﹕變量Da:='aa')﹐select/set都不能做為賦值用
全局變量@@error不存在
錯誤提示語句RAISERROR('生成客户登记号失败!', 1, 2);
應該是RAISE_APPLICATION_ERROR(-20009,'生成客户登记号失败!')
declare date1 datetime; 中将declare 去掉。2.
SELECT @date1=chenyong.tablename.date1,
@count1=chenyong.tablename.count1
FROM chenyong.tablename;
改为:
select a, b INTO 变量1,变量2 FROM ...;3. 用 IF THEN4.
begin tran t1; 不用显式的开始事务。只要记住一个事务结束时写上Commit就行。
date1 chenyong.new_guestid.date1%type;
count1 chenyong.new_guestid.count1%type;--本存储过程用于获取新的客户ID
begin
SELECT date1,count1 into date1,count1 FROM chenyong.new_guestid;
if date1!=(sysdate,`yyyymmdd`) then UPDATE chenyong.new_guestid
SET count1 = 1,date1=(sysdate,`yyyymmdd`);
else
UPDATE chenyong.new_guestid
SET count1 =count1 + 1;
SELECT date1, count1 into date1, count1
FROM chenyong.new_guestid;
end if
returnid:='A'||(concat((trunc(sysdate,`dd`),`yyyymmdd),replace(to_char(count1,4),' ','0')));
end;