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语句,执行与不执行效果是一样的,你当然看不到效果了
[解决办法]
好多分的问题,好久没回了。
[解决办法]
学习了
[解决办法]
[解决办法]
[解决办法]
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,应该不难看出哪个语句出的错误