如何在pb中执行sybase中的存储过程??

liyong00512 2003-11-07 09:06:06
--存储过程如下:

CREATE PROCEDURE dbo.h31_kcxx_cx;1


AS

BEGIN

delete from temp_kcxx_cx --删除原有的数据

insert temp_kcxx_cx (ksid,ypid,kcsl)
select ksid,ypid,sum(kcsl)
from h31_kcxx
group by ksid,ypid --更新数据

END

--我在查询过程中要用到temp_kcxx_cx这个表。
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqjj7758 2003-11-10
  • 打赏
  • 举报
回复
呵呵 ropriest(馆主) 跨越了一个层次阿
ropriest 2003-11-10
  • 打赏
  • 举报
回复
呵呵,将语句
declare @err int

BEGIN transaction
换个先后顺序!
ropriest 2003-11-10
  • 打赏
  • 举报
回复
CREATE PROCEDURE dbo.h31_kcxx_cx;1
AS
BEGIN transaction
declare @err int

delete from temp_kcxx_cx --删除原有的数据
select @err=@@error
if(@err!=0)
begin
rollback transaction
raiserror 33333 "Delete temp_kcxx_cx error!"
return -200
end

insert temp_kcxx_cx (ksid,ypid,kcsl)
select @err=@@error
if(@err!=0)
begin
rollback transaction
raiserror 33333 "insert temp_kcxx_cx error!"
return -300
end

/* select ksid,ypid,sum(kcsl)
from h31_kcxx
group by ksid,ypid --更新数据
*/
COMMIT transaction
return

1、过程中的select语句不能在存储过程中这样使用,查询返回结果不止一个的,需要用游标或者循环来处理。
2、设计到delete、update、insert的,要用transaction来连接数据库,且提交事务,如果没提交,则要在调用时提交(就像上面的回复那样)。
ropriest 2003-11-07
  • 打赏
  • 举报
回复
DECLARE sp_h31_kcxx_cx PROCEDURE FOR h31_kcxx_cx
//如果存储过程有参数可以在此处赋值
//如:@arg1 = :ls_1
// @arg2 = :ls_2
execute sp_h31_kcxx_cx ;
if sqlca.sqlcode<>0 then
commit ;
else
rollback ;
messagebox("信息","存储过程执行失败!")
return
end if
ropriest 2003-11-07
  • 打赏
  • 举报
回复
DECLARE sp_h31_kcxx_cx PROCEDURE FOR h31_kcxx_cx
//如果存储过程有参数可以在此处赋值
//如:@arg1 = :ls_1
// @arg2 = :ls_2
execute sp_h31_kcxx_cx ;
if sqlca.sqlcode<>0 then
commit ;
else
rollback ;
messagebox("信息","弃奖数据库准备失败!")
return
end if

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧