急!急!急!PB+SQLSERVER无法成功执行存储过程

lingda 2002-02-18 03:14:44
各位高手:
表:create table aaa (
aa numeric(5) primary key,
bb varchar(10))
存储过程:create procedure sp_insert
@aa numeric(5),
@bb varchar(10),
@cc varchar(5) output
as
begin tran
insert into aaa values (@aa,@bb)
if @@error<>0
begin
rollback tran
select @cc = -100
end
else
begin
commit tran
select @cc = 0
end
end if

问题如下:
1 在PB中第一次执行有如下提示:
A: Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement
is missing. Previous count = 1, current count = 0.
第二次执行有如下提示:
B:The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION.
去了存储过程的begin tran 和 rollback tran和commit tran正常,为什么???
难道只能在PB中提交???
2 无法在PB中获取存储过程的return值
如存储过程中的return -100和return 0PB无法取得
用FETCH有如下提示:
Cursor is not open

急盼高手解答,thank!!!
...全文
215 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ideage 2002-02-19
  • 打赏
  • 举报
回复
To :lingda(林达)
我给你留言了!注意察看。
zqllyh 2002-02-19
  • 打赏
  • 举报
回复
看看这条帮助
parameters output for Sybase Systems 10.x and 11.x

FETCH的帮助
高手们,我很想知道我说得对不对?
lingda 2002-02-19
  • 打赏
  • 举报
回复
1 如何在事务对象中声明远程存储过程(在扩展函数中)为函数,无相应DLL.
再说事务也无法选中。
2 即使能实现也只是获返回值无法获出参。
3 SQL中再建一个命名事务行不行
zqllyh 2002-02-19
  • 打赏
  • 举报
回复
up
zqllyh 2002-02-19
  • 打赏
  • 举报
回复
来迟了。
我想讨论:我在实际的存储过程应用中,如果利用PB自身的事务处理机制,会不断出现锁数据库的情况,只要一调用存储过程,数据库就会锁住,一直等到该存储过程完成为止,我把锁的几种参数均试过,一样的结果,所以我认为,调用存储过程时,应该设autocommit=TRUE,把事务提交给后台去处理。不知我有没有说对,请斑主、高手们告诉我,谢谢!!!!
ideage 2002-02-18
  • 打赏
  • 举报
回复
建议:
1.不在SQLServer中使用事务,事务只在PB中自己控制(你非用,可以看楼上的帖子啊!)。
2.继承PB的事务对象Transobject(默认是SQLCA)对象,覆盖SQLCA(在Application的属性里)。
在你的事务对象中声明远程存储过程(在扩展函数中)为函数,可以有返回值。
3.可以任意调用:SQLCA.SP_Insert(a,b,c)

liulee 2002-02-18
  • 打赏
  • 举报
回复
用execute immediately 试试看?
lingda 2002-02-18
  • 打赏
  • 举报
回复
pb端设定为autocommit=false时, 在存储过程中设定一个事务后出现 Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement
is missing. Previous count = 1, current count = 0.
liulee 2002-02-18
  • 打赏
  • 举报
回复
在存储过程中设定一个事务,pb端设定为autocommit=false试验一下。
lingda 2002-02-18
  • 打赏
  • 举报
回复
1 怎么能自动提交呢不过设过出没有用。
2 系统提示:Cursor is not open
zqllyh 2002-02-18
  • 打赏
  • 举报
回复
你设自动提交,然后查查PB中的FETCH,再把@CC的类型对应好来.

401

社区成员

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

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