关于存储过程的一个奇怪问题

lunzi 2000-04-03 01:39:00
以下是我在sql server中编写的存储过程:
CREATE proc RefreshNo(@aFldName char(40),@aTabName char(40)) AS
execute('declare cur1 cursor dynamic
for
select '+@aFldName+' from '+@aTabName)

declare @i int
declare @ci char(4)

set @i=1
open cur1
fetch next from cur1
while @@fetch_status=0 begin
set @ci=convert(char,@i) ----语句1
execute('update '+@aTabName+' set '+@aFldName+'='+@ci+' where current of cur1') ----语句2
fetch next from cur1
set @i=@i+1
end
close cur1
deallocate cur1

我的表gjn1中有两个字段:序号 int null, 全宗号 char(10) not null
我执行存贮过程的语句是:exec RefreshNo '序号','gjn1'
我的目的是要从新给序号字段排序,即1,2,3,4,......
令人奇怪的是,我在sql server中执行该存储过程,表gjn1的序号字段修改成功
可是,我在delphi5中执行该存储过程,表gjn1的序号字段只能修改37条记录,
以后的记录的序号字段为0,如果我把存储过程中的语句1删除后,就能全部
更新记录,但我怎么达到我的目的呢?
另外,由于我要动态给存储过程赋表名,所以我必须使用execute('......')格式,
由于@i是整形变量,所以我要多写一条语句1.

请问各位大虾,为什么会出这种错误,我该用什么办法才能实现我的目的?
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lunzi 2000-04-06
  • 打赏
  • 举报
回复
paul_feng:非常感谢你的热心,我用的方法与你一样,
我不知道为什么出这种错误,我现在已通过跳过这个存储过程而解决了该问题
paul_feng 2000-04-06
  • 打赏
  • 举报
回复
我用DELPHI 4执行过这个存储过程,运行很顺利,GJN1表里的70条记录的'序号'都正常更新,但我的DELPHI程序只用了一个SOTREDPROC控件,且参数值都写在PARAMS的属性里,在FORM_CREATE事件中执行此存储过程,结果正常。请你详细讲一下你在DELPHI里是如何调用此存储过程的

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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