PLSQL使用动态使用执行立即执行

时间:2014-12-03 20:49:05

标签: dynamic plsql using execute-immediate

我正在使用绑定变量动态构建搜索查询,该绑定变量具有至少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语句。

2 个答案:

答案 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