当前位置: 代码迷 >> PB >> 这个存储过程施行不正确
  详细解决方案

这个存储过程施行不正确

热度:59   发布时间:2016-04-29 07:34:39.0
这个存储过程执行不正确
存储过程如下:

ALTER PROCEDURE "DBA"."update_ifenddate"(IN @ld_nowdate DATE)
BEGIN
   DECLARE @ld_nowdate DATE ;
   UPDATE DBA.dangan set ifenddate = 1 WHERE bcjsrq<[email protected]_nowdate AND ifenddate = 0;
END



pb调用如下:


ld_nowdate = date(today() , 'yyyy-mm-dd')
declare sp_update_ifenddate procedure for update_ifenddate(ld_nowdate)
execute sp_update_ifenddate;
if sqlca.sqlcode = 0 then
   commit;
   messagebox('' , 'ok')
else
   messagebox('' , sqlca.sqlerrtext)
   rollback;
   
end if


数据库里有一条数据满足条件。
结果是:提示OK,但是查询一下数据库ifenddate的值还是0,请问那里出了问题?
------解决方案--------------------
1, 在
ALTER PROCEDURE "DBA"."update_ifenddate"(IN @ld_nowdate DATE)

BEGIN
   DECLARE @ld_nowdate DATE ; --参数里有了 @ld_nowdate ,是不是在这里就不用再定义了?
......

2, 调用处的 
ld_nowdate = date(today() , 'yyyy-mm-dd')

似乎不对。。。
------解决方案--------------------
ALTER PROCEDURE "DBA"."update_ifenddate"
(IN @ld_nowdate DATE)
AS
BEGIN
   UPDATE DBA.dangan set ifenddate = 1 WHERE bcjsrq<[email protected]_nowdate AND ifenddate = 0;
END

------解决方案--------------------
存储过程如下:
ALTER PROCEDURE "DBA"."update_ifenddate"(IN @ld_nowdate DATE)
BEGIN
   --DECLARE @ld_nowdate DATE ;
   UPDATE DBA.dangan set ifenddate = 1 WHERE bcjsrq<[email protected]_nowdate AND ifenddate = 0;
END



pb调用如下:

ld_nowdate = date(today() , 'yyyy-mm-dd')
declare sp_update_ifenddate procedure for update_ifenddate(@ld_nowdate = :ld_nowdate);
execute sp_update_ifenddate;
if sqlca.sqlcode = 0 then
   commit;
   messagebox('' , 'ok')
else
   messagebox('' , sqlca.sqlerrtext)
   rollback;
       
end if


  相关解决方案