execute sp_executesql 和 execute
execute 在 SQL Server 中可简写成:"exec"。
execute 的官方解释是:执行标量值的用户定义函数、系统过程、用户定义存储过程或扩展存储过程。同时支持 Transact-SQL 批处理内的字符串的执行 。
在平时,我们使用普通的sql语句时,可直接用exec执行:
exec('select * from dbo.EMPLOYEEINFO')
或
BEGIN
DECLARE@tabel_nameVARCHAR(20)
DECLARE@SQL_UPDATEVARCHAR(1000)
SET@tabel_name='dbo.EMPLOYEEINFO' '
SET@SQL_UPDATE='UPDATE '+@tabel_name+' SET NAME=''张三'' WHERE ID = 1'
exec(SQL_UPDATE)
END
DECLARE@tabel_nameVARCHAR(20)
DECLARE@SQL_UPDATEVARCHAR(1000)
SET@tabel_name='dbo.EMPLOYEEINFO' '
SET@SQL_UPDATE='UPDATE '+@tabel_name+' SET NAME=''张三'' WHERE ID = 1'
exec(SQL_UPDATE)
END
但当我们需要使用带有返回值的sql语句时却不能这样使用了!
如下:
BEGIN
DECLARE@tabel_colVARCHAR(20)
DECLARE@SQL_SELECTNVARCHAR(1000)
DECLARE@SQL_VALUEVARCHAR(10)
SET@SQL_SELECT='SELECT @tabel_col = col_NAME FROM dbo.EMPLOYEEINFO WHERE ID = 1'
exec sp_executesql @SQL_SELECT ,N'@tabel_col VARCHAR(10) OUTPUT,@SQL_VALUE OUTPUT
PRINT@SQL_VALUE
END
DECLARE@tabel_colVARCHAR(20)
DECLARE@SQL_SELECTNVARCHAR(1000)
DECLARE@SQL_VALUEVARCHAR(10)
SET@SQL_SELECT='SELECT @tabel_col = col_NAME FROM dbo.EMPLOYEEINFO WHERE ID = 1'
exec sp_executesql @SQL_SELECT ,N'@tabel_col VARCHAR(10) OUTPUT,@SQL_VALUE OUTPUT
PRINT@SQL_VALUE
END
注:sql语句字段一定要用ntext/nchar/nvarchar类型,否则报错。
新手上路,请多多指正!共同学习,一起进步!