sp_executesql

作者:leen 来源:ITPOW(原创) 日期:2006-10-18

sp_executesql 是 SQL Server 的一个存储过程,用于执行一个 SQL 语句。

语法:

sp_executesql [@stmt =] stmt
[
    {, [@params =] N'@parameter_name  data_type [,...n]' }
    {, [@param1 =] 'value1' [,...n] }
]

示例一:

看语法可能有些茫然,下面给出一个示例便于更好地理解。

exec sp_executesql N'select * from authors where state=@state', N'@state char(2)', 'CA'

上述语句中:蓝色的是 SQL 形式的字符串,其中含有一个参数 @state;红色的为申明变量语句的字符串,绿色为参数 @state 的值。

蓝色字符串和红色字符串必须是可以隐式转换成 ntext 的 Unicode 常量或变量,所以这里字符串前面的 N 不能省略。

示例二:

exec sp_executesql N'select * from authors where state=@state and contract=@contract', N'@state char(2), @contract bit', 'CA', 1

SQL 字符串中有两个参数,两个参数存放在一个字符串中,而两个参数的值则分别跟随在后面。

以上示例均基于 SQL Server 自带数据库 pubs,可以直接用于测试。

更多应用与知识请参见:

  1. 用 sp_executesql 解决字段名、表名不能用变量的问题
  2. 执行存储过程时到底要不要加 exec
  3. T-SQL 字符串前加 N 是什么意思
相关文章