mssql的exec怎么才能把结果赋值给变量?

我的sql:
DECLARE @syname nvarchar(100)
DECLARE @dbname nvarchar(100)
SET @syname= ''
SET @dbname= 'master'
SET @syname= ('select name from '+@dbname+'.sys.indexes where object_id = 4')
exec (@syname)
这样是把syname的运行结果输出,这段代码可以在任意版本sql里直接运行,输出值是“clus”
但我想exec给@syname赋值,要怎么写啊?大家帮忙下,谢谢了

通过 
SP_EXECUTESQL
的第2个参数来定义有哪些参数
输出的加OUTPUT

后面的参数为执行的时候,具体参数的数据。输出的加OUTPUT



1> BEGIN
2>   DECLARE @Sql NVARCHAR(200);
3>   DECLARE @name  VARCHAR(10);
4>   SET @Sql = 'SELECT @name = name FROM test_dysql WHERE id=1';
5>   PRINT @Sql;
6>   EXEC SP_EXECUTESQL  @Sql, N'@name VARCHAR(10) OUTPUT', @name OUTPUT;
7>   PRINT @name;
8> END
9> go
SELECT @name = name FROM test_dysql WHERE id=1
A

追问

我是要把syname输出啊,测试代码我很多不理解,麻烦用我的代码改,谢谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-26
exec没有赋值功能,需要用sp_executesql扩展存储过程
具体语法可在联机丛书中查到本回答被网友采纳
相似回答