当前位置: 代码迷 >> Sql Server >> 怎么在标准SQL中执行动态SQL语句?例如T-SQL的EXEC
  详细解决方案

怎么在标准SQL中执行动态SQL语句?例如T-SQL的EXEC

热度:67   发布时间:2016-04-24 09:43:32.0
如何在标准SQL中执行动态SQL语句?例如T-SQL的EXEC。
注意,是标准SQL语句中。。。

业务问题描述如下,或者看大家能否提供变通方案?
Create table MyTable(
f1 varchar(100);
f2 varchar(100);
);
insert into MyTable(f1,f2) values('value1','value2');
......
Create procedure MyProc(IN col_name varchar(32))
MODIFIES SQL DATA DYNAMIC RESULT SETS 1 BEGIN ATOMIC
DECLARE result CURSOR FOR select col_name from MyTable;
OPEN result; 
END
Call MyProc('f1');

上述调用后,本想得到列f1的值,但是却得到了字符串常量'f1'。
------解决思路----------------------

declare @fieldname varchar(100)
set @fieldname='f1'
declare @sql nvarchar(1000)
set @sql='select '+@fieldname+' from MyTable'
exec sp_executesql @sql

------解决思路----------------------
支持。
SQL-92
12)Support for dynamic execution of SQL language,

------解决思路----------------------
支持的

EXEC 存储过程 参数,参数
  相关解决方案