【发布时间】:2017-09-25 09:20:00
【问题描述】:
以下是我希望我的过程生成的示例查询
select *
from Registration
where Loc_ID = 6
AND CROP_ID = 163
AND REG_NAME = 'Apiro MX';
REG_NAME 是varchar2()
我创建了一个过程,我想在其中执行一个查询,如下所示
query := 'select REG_ID from Registration where loc_id = ' ||
countryid || ' AND Crop_id = ' || cropid ||
' AND Reg_name = '|| ''' || productid || ''' || ';
我在REG_NAME 部分出现错误,它将productid 视为" || productid ||"
你能帮我解答一下这个问题吗?
【问题讨论】:
-
为什么要使用动态 SQL 进行查询? (如果你有真正的理由,为什么不使用绑定变量?)
-
我们不能使用动态 sql 来做到这一点吗?如果可以,请您帮我更正该查询。
-
当然可以,只需转义您正在使用的引号,或者(更多)最好使用绑定变量;但你为什么要?它的效率较低且难以维护。
-
实际上,到目前为止,我已经在 DB 中做了很多更改,如果我采用其他方式,我需要恢复这些更改并消耗时间。你能帮我更正那个查询吗?因为我已经改变了很多次
标签: sql oracle plsql procedure