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

c77_cn 2014-11-07 01:33:18
注意,是标准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'。
...全文
497 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
c77_cn 2014-11-10
  • 打赏
  • 举报
回复
从Tiger_Zhao发的SQL-92来看,标准确实支持动态SQL。 但是不同的数据库实现的支持方式不同,比如SQL Server使用了exec方式。 hypersql没有使用类似SQL Server的方式,而是采用了SQL/JRT的方式,即java procedure的方式来实现执行动态SQL的支持。这种方式,其实就是通过JDBC执行动态的SQL。 另外,好像SQL Server不支持SQL/JRT的方式,而Oracle、DB2支持。
还在加载中灬 2014-11-07
  • 打赏
  • 举报
回复
支持的 EXEC 存储过程 参数,参数
Tiger_Zhao 2014-11-07
  • 打赏
  • 举报
回复
支持。
SQL-92
12)Support for dynamic execution of SQL language,
c77_cn 2014-11-07
  • 打赏
  • 举报
回复
其实就是想问问:在ANSI-92 SQL或者SQL:2011这些标准中是否支持执行动态SQL?
c77_cn 2014-11-07
  • 打赏
  • 举报
回复
不好意思,可能没有说明白意思。 我用的不是sql server,是一个小众的产品:hypersql。它宣传支持标准SQL,但是自身没有提供类似于sql server的exec功能。 所以我想问问标准SQL是否支持执行动态SQL?
天下如山 2014-11-07
  • 打赏
  • 举报
回复

declare @fieldname varchar(100)
set @fieldname='f1'
declare @sql nvarchar(1000)
set @sql='select '+@fieldname+' from MyTable'
exec sp_executesql @sql
天下如山 2014-11-07
  • 打赏
  • 举报
回复
存储过程里面用动态SQL 去做。
还在加载中灬 2014-11-07
  • 打赏
  • 举报
回复
你这个是哪个标准的SQL
xdashewan 2014-11-07
  • 打赏
  • 举报
回复
Create table MyTable( f1 varchar(100); f2 varchar(100); ); go insert into MyTable(f1,f2) values('value1','value2'); go 。。。。。。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧