首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

PB 调用 SQLSERVER 的存储过程解决办法

2012-03-29 
PB 调用 SQLSERVER 的存储过程PB11 按如下方式调用 SQLSERVER 的存储过程,不报错,但存储过程里的代码没执

PB 调用 SQLSERVER 的存储过程
PB11 按如下方式调用 SQLSERVER 的存储过程,不报错,但存储过程里的代码没执行:

DECLARE SRCXB_ZY PROCEDURE FOR SRCXB_ZY_CW
@DA1 = '200902' 
execute SRCXB_ZY ;
commit ;

SQLSERVER 存储过程的代码是这样:

create procedure SRCXB_ZY_CW @DA1 char(6)
as
begin
  begin transaction SRCXB_ZY_CW

  SELECT convert(char(8),RQ,112) CXRQ ,SFLB LB,sum(SJFY) HZJE INTO SRCXB_CW 
  FROM SFD_2 
  WHERE convert(char(6),RQ,112)=@DA1 group by convert(char(8),RQ,112) ,SFLB  

  commit transaction SRCXB_ZY_CW
end
GO


PB11,到底应该怎样调用存储过程?

[解决办法]
给你一个我以前写的,你的存储过程执行只是查询,并没有什么别的操作,没法看效果

sqlca.autocommit=true
declare lup_drophiscol procedure for up_drophiscol
@tablename=:ls_tabname,
@checkcontent=:ls_err output;
execute lup_drophiscol;
if sqlca.sqlcode = -1 then
sqlca.autocommit=false
messagebox('出错',sqlca.sqlerrtext)
return
end if
fetch lup_drophiscol into :ls_err;
close lup_drophiscol;
sqlca.autocommit=false
if sqlca.sqlcode = -1 then
messagebox('出错',sqlca.sqlerrtext)
elseif isnull(ls_err) or ls_err='' then
messagebox('系统提示!','删除成功!')
else
messagebox('出错!',ls_err)
end if
[解决办法]
但是在执行存储过程前加 sqlca.autocommit=true 
执行完后sqlca.autocommit=false 
会减少很多问题。
[解决办法]
给你一个我以前写的,你的存储过程执行只是查询,并没有什么别的操作,没法看效果 

-------
人家有into的
[解决办法]
星星提的问题没那么容易解决的~~
[解决办法]

探讨
星星提的问题没那么容易解决的~~

[解决办法]
我有一个SQLSERVER 存储过程以前在pb9中调用正常,但用pb11就有问题
在想是不是pb11的很多地方改了
[解决办法]
建议把你的存储过程里的select改为update一个表中的数据,你可以看一下是否执行


你用select语句,执行与不执行效果是一样的,你当然看不到效果了
[解决办法]
好多分的问题,好久没回了。
[解决办法]
学习了
[解决办法]
探讨
但是在执行存储过程前加 sqlca.autocommit=true
执行完后sqlca.autocommit=false
会减少很多问题。

[解决办法]
探讨
建议把你的存储过程里的select改为update一个表中的数据,你可以看一下是否执行


你用select语句,执行与不执行效果是一样的,你当然看不到效果了

[解决办法]
1、在Sqlserver中执行,看看是否成功

2、在PB中执行,首先要看掉用存储过程是否成功:可以看sqlcode;也可以建立sql事件跟踪器看

还有如果感觉是pb11有问题,就用pb其他版本试试
[解决办法]
你的存储过程不需要向pb返回结果,可以使用动态sql拼能在查询分析器执行的sql动态执行

如果直接声明存储过程来execute也可以的,
建议前后增加改变sqlca.autocommit属性

DECLARE SRCXB_ZY PROCEDURE FOR SRCXB_ZY_CW 
@DA1 = '200902' -----注意,你这里少分号

execute SRCXB_ZY ; 
commit ; 
你可以调试检测sqlca.sqlcode和sqlerrtext,应该不难看出哪个语句出的错误

热点排行