需求场景:
需动态拼接sql语句进行执行,并将执行的结果赋值给一指定变量。
样例代码如下:
SELECT @tableName = TAB_NAME FROM dbo.NMR_BLYWBDY WHERE BLID =@bldm AND TAB_TYPE='0' SELECT @sql= 'SELECT DISTINCT top 1 @a= KBLMINXH FROM '+@tableName+' WHERE PAGENO=(SELECT MAX(PAGENO) FROM '+@tableName+')' EXEC sp_executesql @sql,N'@a varchar(9) output',@kblminxh OUTPUT
注意:声明kblminxh等输出参数时应当为ntext,nvarchar,nchar类型,否则会报这个错过程需要参数'@statement' 为'ntext/nchar/nvarchar' 类型。
说明:@sql里的@a是作为输出参数的,@a又把值赋值给@kblminxh,感觉像是动态传递变量值。sp_executesql是比较快。
注sp_executesql是2005引入的系统函数,自行查询其好处。