你这个语句,是 执行 动态 SQL, 并获得 动态 SQL 的执行结果。
下面是一个例子代码。
第6行,是执行 EXEC SP_EXECUTESQL 动态 sql 语句。
请注意第4行的 sql 语句。里面有 SELECT @name = name
在第6行的 语句中, 有 N'@name VARCHAR(10) OUTPUT', @name OUTPUT;
前面的 N'@name VARCHAR(10) OUTPUT'
意思是 告诉 EXEC SP_EXECUTESQL 这个存储过程,我这个 动态 SQL ,有一个参数
名字叫 @name 数据类型是 VARCHAR(10) , 类型是 OUTPUT 的
后面的 @name OUTPUT。 就是 动态 sql 执行完毕后,那个 输出的变量,具体存储到哪个变量中去。
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
参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/6f6da5fee476db869f51465d.html