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怎么才能把结果赋值给变量?的主要内容,如果未能解决你的问题,请参考以下文章
qt 下cpp文件中(mysql数据库)怎么把select结果赋值给一个变量