请教一条SQL语句的意思

exec sp_executesql @sql,N'@tableName varchar(50) output',@everyTable output
其中 @everyTable 是定义的参数表
请教高手,这条语句的详细含义是什么?

你这个语句,是 执行 动态 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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-09
exec 执行存储过程
sp_executesql 自定义的存储过程名称
@sql 参数:一条sql语句
N'@tableName 输出参数
@everyTable 输出参数
详情请查看存储过程:sp_executesql 里面是怎么定义的输出参数、
相似回答