下班前结贴哦

liyingenjoy 2010-08-03 04:23:21
接触数据库时间不长,哪位大侠帮忙下:
set @sqlstr =...
exec (@sqlstr)


其中,希望@sqlstr的值为:
WHILE @idx <= @ToId

BEGIN


set @add=1 --后缀开始值

select @playername = playername from changename with(nolock) where idx = @idx

set @newname = @playername+cast(@add as varchar)

set @ret1 = null

set @ret2 = null

select @ret1 = player_id from player0.dbo.playerinfo with(nolock) where playername = @newname

select @ret2 = player_id from playerinfo with(nolock) where playername = @newname

while (@ret1 is not null or @ret2 is not null)

begin

set @add = @add+1

set @ret1 = null

set @ret2 = null

set @newname=@playername+cast(@add as varchar)

select @ret1 = player_id from player0.dbo.playerinfo with(nolock) where playername = @newname

select @ret2 = player_id from playerinfo with(nolock) where playername = @newname

end

update changename set newplayername=@newname where idx=@idx

SET @idx = @idx+1

END

应该怎么写呢???
...全文
158 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyingenjoy 2010-08-04
  • 打赏
  • 举报
回复
sorry,忙忘了,现在补上
swuxd 2010-08-03
  • 打赏
  • 举报
回复
下班了,LZ没结贴
liyingenjoy 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hdhai9451 的回复:]
变量太多了,应该把它写成存储过程
[/Quote]
我是菜鸟,具体怎么做?能否说清楚点?
Andy__Huang 2010-08-03
  • 打赏
  • 举报
回复
变量太多了,应该把它写成存储过程
liyingenjoy 2010-08-03
  • 打赏
  • 举报
回复
应该怎么写呢???急急急!!!
明朝2013 2010-08-03
  • 打赏
  • 举报
回复
顶顶更健康
pt1314917 2010-08-03
  • 打赏
  • 举报
回复
好多变量。都慢慢拼接了。为啥需要动态呢?
天-笑 2010-08-03
  • 打赏
  • 举报
回复

WHILE @idx <= @ToId

BEGIN


set @add=1 --后缀开始值

select @playername = playername from changename with(nolock) where idx = @idx

set @newname = @playername+cast(@add as varchar)

set @ret1 = null

set @ret2 = null

select @ret1 = player_id from player0.dbo.playerinfo with(nolock) where playername = @newname

select @ret2 = player_id from playerinfo with(nolock) where playername = @newname

if (@ret1 is not null or @ret2 is not null)

begin

set @add = @add+1

set @ret1 = null

set @ret2 = null

set @newname=@playername+cast(@add as varchar)

select @ret1 = player_id from player0.dbo.playerinfo with(nolock) where playername = @newname

select @ret2 = player_id from playerinfo with(nolock) where playername = @newname

end

update changename set newplayername=@newname where idx=@idx

SET @idx = @idx+1

END
liyingenjoy 2010-08-03
  • 打赏
  • 举报
回复
就是说参数的值是很多语句,应该怎么写在set @sqlstr =...这里,等号后面怎么写?
aaron_gl 2010-08-03
  • 打赏
  • 举报
回复
set @sqlstr=N'你的语句'
print @sqlstr
进行比较下看看有差异吗
华夏小卒 2010-08-03
  • 打赏
  • 举报
回复
哪里有问题?

34,590

社区成员

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

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