我正在使用绑定变量动态构建搜索查询,该绑定变量具有至少1个且最多7个不同的潜在标准。我知道我可以这样做 -
EXECUTE IMMEDIATE sql USING bind_var1, bind_var2 or
EXECUTE IMMEDIATE sql USING bind_var3, bind_var5, bind_var7.
是否可以在sql中包含绑定变量?
sql = 'SELECT * FROM table WHERE id = :bind_var1 AND name = :bind_var2 USING bind_var1, bind_var2'
并做
EXECUTE IMMEDIATE sql?
我想要并且需要动态构建USING部分,而不是编写很多IF THEN语句。
答案 0 :(得分:0)
你的使用bind_var1,bind_var2 代码的pice应该在你的sql字符串的外面,并且在执行立即语句的末尾出现,并且对于select senarios尝试使用动态sql用于使用游标进行选择,除非您想选择变量
答案 1 :(得分:0)
根据您的标签,我认为这将在某种PL / SQL块中使用。所以,也许您正在寻找open for
声明。
这允许您在动态查询中获取光标:
sql := 'SELECT * FROM table WHERE id = :bind_var1 AND name = :bind_var2';
open my_cursor for sql using bind_var1, bind_var2';
-- do whatever you need with your cursor