0

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

4

2 回答 2

0

您的USING bind_var1,bind_var2代码片段应该在您的 sql 字符串之外,并在执行立即语句的末尾,并且对于选择 senarios,除非您想选择变量,否则请尝试使用动态 sql 进行带游标的选择

于 2014-12-03T20:58:04.827 回答
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
于 2014-12-03T21:00:20.943 回答