根据我的研究,在MSSQL中没有数组变量,不是吗? 我想获得选择查询的结果。查询返回了多个值。 (你可以看到下面的查询,它返回大于1倍的值,我不能给它分配。)如何从查询中获取值到变量
Declare @sp_name varchar(100)
set @sp_name = (select name from sys.procedures)
有没有办法得到的结果给一个变量?
根据我的研究,在MSSQL中没有数组变量,不是吗? 我想获得选择查询的结果。查询返回了多个值。 (你可以看到下面的查询,它返回大于1倍的值,我不能给它分配。)如何从查询中获取值到变量
Declare @sp_name varchar(100)
set @sp_name = (select name from sys.procedures)
有没有办法得到的结果给一个变量?
您可以使用table variable:
declare @results table (Name nvarchar(100))
insert into @results select name from sys.procedures
select * from @results
使用此
set @sp_name = ''
select @sp_name = @sp_name +name+',' from sys.procedures
set @sp_name = left(@sp_name,len(@sp_name)-1) -- Remove last comma
现在@sp_name将是一个逗号分隔的列表。
你也可以做
select @sp_name into #tmpList FROM sys.procedures
select * from #tmpList
你是对的,没有阵列,但希望无论是逗号列表或临时表会做你想要什么..
感谢@adrift,我想使用他们每个人的结果--- SELECT * FROM fn_my_permissions('dbo.MyProc','OBJECT') ORDER BY subentity_name,permission_name ---我必须用结果替换dbo.MyProc,怎样才能使用循环与表变量? – ToUpper
我不确定你想如何使用它,但是你可以从该表中选择并执行动态sql,或者使用游标循环遍历行。请参阅示例[此处](http://msdn.microsoft.com/en-us/library/ms180169.aspx)。 –
Wov,它似乎专业,我必须努力工作..谢谢 – ToUpper