请教在存储过程中如何使用动态变量
如:先定义了
@d1 varchar(30),
@d2 varchar(30),
@d3 varchar(30),
@d4 varchar(30),
@d5 varchar(30),
@d6 varchar(30),
@d7 varchar(30),
@d8 varchar(30),
@d9 varchar(30),
@d10 varchar(30),
@i int(4)然后循环i=1,i<=10;
在循环体内如何得到与i相对应的变量,如:当i=1时,取得@d1变量,当i=2时,取得@d2变量?
想要循环体内判断当前的di不为空时再进行操作
如:先定义了
@d1 varchar(30),
@d2 varchar(30),
@d3 varchar(30),
@d4 varchar(30),
@d5 varchar(30),
@d6 varchar(30),
@d7 varchar(30),
@d8 varchar(30),
@d9 varchar(30),
@d10 varchar(30),
@i int(4)然后循环i=1,i<=10;
在循环体内如何得到与i相对应的变量,如:当i=1时,取得@d1变量,当i=2时,取得@d2变量?
想要循环体内判断当前的di不为空时再进行操作
解决方案 »
- 多人视频语音系统
- 怎样导入数据库
- 错误 是 GetName() 并非所有的代码路径都返回值
- 新年好!送分送分!“菜鸟级"SqlDataSource动态设置问题!谢谢!!
- 没有分啦~好心人帮忙看看吧
- 关于.net编码问题
- ASP.NET静态方法静态变量什么时候进驻服务器内存
- vs2005内嵌的小web服务器可以;iis不可以?
- 文件上传、下载和管理!
- 请大侠指点,看似简单的问题:不用href,如何让<A onclick=...>DoIt </a>看起来象超链接(即鼠标变手)?
- 将WinForm控件注册到哪浏览器可以自动使用?
- !!!!!!*****防sql注入的问题********!!!!!!!!!!!
select
[00]=(case when i=1 then @d1 else 0 end),
[11]=(case when i=2 then @d2 else 0 end),
[22]=(case when i=3 then @d3 else 0 end),
.
.
.
[99]=(case when i=9 then @d9 else 0 end),
[10](case when i=10 then @d10 else 0 end)
declare @d varchar(300)
set @d = 'a|b|c'--传入参数declare @t varchar(30)
declare @d1 varchar(301)
set @d1 = @d+'|'
while PatIndex('%|%',@d1)<>0
begin
set @t = SubString(@d1,0,PatIndex('%|%',@d1))
print @t
set @d1 = SubString(@d1,PatIndex('%|%',@d1)+1,len(@d1))
end/*输出
a
b
c
*/
declare @d2 nvarchar(30)
declare @d3 nvarchar(30)
declare @d4 nvarchar(30)
declare @d5 nvarchar(30)declare @str nvarchar(max)
set @str=''
declare @i int
set @i=1
while(@i<=5)
begin
set @str=@str+' set @d'+convert(varchar(5),@i)+'=convert(nvarchar(10),'+convert(varchar(5),@i)+') print @d'+convert(varchar(5),@i)
set @i=@i+1
end
exec SP_EXECUTESQL
@str,
N'@d1 as int OUTPUT,@d2 as int OUTPUT,@d3 as int OUTPUT,@d4 as int OUTPUT,@d5 as int OUTPUT',
@d1 OUTPUT ,
@d2 OUTPUT,
@d3 OUTPUT,
@d4 OUTPUT,
@d5 OUTPUTOUTPUT
1
2
3
4
5
你这里也一样,需要动态拼SQL
declare @str nvarchar(max) 这句未通过,换成declare @str nvarchar(500)测试通过谢谢了,一直没拼对。