关于sql server中存储过程的问题

shto 2000-04-04 09:15: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.

请问各位大虾,我该用什么办法才能实现我的目的!



...全文
80 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
MikeZyx 2000-04-06
  • 打赏
  • 举报
回复
你试着将语句1和语句2合并为:
execute('update '+@aTabName+' set '+@aFldName+'='+convert(char,@i)+' where current of cur1')
试试看!

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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