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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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输出啊,测试代码我很多不理解,麻烦用我的代码改,谢谢

参考技术A exec没有赋值功能,需要用sp_executesql扩展存储过程
具体语法可在联机丛书中查到

数组变量可以作赋值操作吗?

参考技术A 数组变量在初始化后不能重新赋值。实际上数组名相当于const 指针 参考技术B 也不是不可以,用指针定义的数组,你可以直接把地址赋过去 参考技术C 如果有a[5]=1,2,3;
b[5]=1,2,3,4,5;
直接 a = b是不行的,可以用个for循环来一一赋值
for(int i = 0;i<5;i++)

a[i] = b[i];

或者用 memcpy(a,b,sizeof(b));本回答被提问者和网友采纳
参考技术D 可以通过下标访问每一个元素,是可以重新赋值的 第5个回答  2013-01-13 按照元素来赋值,或者是内存拷贝memcpy

以上是关于mssql的exec怎么才能把结果赋值给变量?的主要内容,如果未能解决你的问题,请参考以下文章

怎么把shell后台输出赋值给变量

qt 下cpp文件中(mysql数据库)怎么把select结果赋值给一个变量

mssql 的 存储过程 变量赋值问题

怎么将shell变量等于命令的结果,比如把date命令的结果赋值给变量a

SQL存储过程中怎样给变量赋值?

oracle 中怎样把查询结果当做已知量或赋值给某个变量?