[交流]动态sql语句小结
版上看到有人问用sp_executesql执行动态产生的sql语句的问题,sp_executesql很好用,它的格式是
第一个参数是动态产生的sql命令(A),A中可以含有参数,
第二个是A中参数的定义,可以指定其IN, OUTPUT属性
第三个及以后是传给A的参数列,
结合起来,可以动态产生sql语句执行,可以传入参数也可以得到返回参数
关于动态sql语句,了解一下exec "string", exec("string"), sp_executesql,sp_execresultset和OPENQUERRY就基本上可以处理了。
可以参考http://www.sommarskog.se/dynamic_sql.html "The Curse and Blessings of Dynamic SQL"。这篇文章很好,里面还提到了动态产生cursor。目前有越南语、德语、韩语的翻译,可惜没有中文的。
该文没有对OPENQUERRY展开介绍,这里有一些trick,可以绕开一些sql的限制,虽然不太自然。
另外该文也没有介绍sp_execresultset,传入一个参数,是sql语句,sp_execresultset先执行它的到一个执行结果(resultset),然后再执行这个resultset的内容。手头有一个代码,可能太长,贴不上,请自行google。