【发布时间】:2017-08-07 12:54:38
【问题描述】:
我想知道是否可以将我的 sql 查询的某些部分定义为字符串。
我编写了下面的代码,但无法将预定义的字符串部分连接到现有查询。
实际上@sirketid、@uzman、@basvurukodu 参数效果很好,但是@ORA_BASVURU_KESIN_KOSUL 参数会导致问题。
我认为因为它有一些特定于 sql 的表达式,如 和,它的处理方式与用于比较或分配的简单变量(如 @sirket_id)不同。 p>
它不会抛出任何错误消息,代码根本不会执行操作。
SET @ORA_BASVURU_KESIN_KOSUL = 'and akftif = 1';
UPDATE basvuru
SET sirket = @sirketid,
talep_gorevlendirme_rapor = 'G',
birimi = 'SS',
uzman = @uzman,
WHERE
kod = @basvurukodu + ' ' + @ORA_BASVURU_KESIN_KOSUL;
我可以像这样连接查询部分吗?如果可以,如何连接?
谢谢
【问题讨论】:
-
您将需要动态 sql。首先连接你要执行的整个 SQL,最后用 EXEC 执行 SQL
-
你不能像这样连接新的条件。为此,您必须使查询动态
-
Background material for your perusal 和 this 更一般地用于动态 SQL。关于这个话题有很多话要说。由于涉及注入的风险,将任意 SQL 作为参数传递几乎从来都不是一个好方法。
-
这真的比我想象的要复杂:)
标签: sql sql-server database string stored-procedures