sql - oracle游标值根据条件而变化

标签 sql oracle stored-procedures cursor conditional-statements

我想问是否可以在游标声明上分配变量。

CURSOR cur_name IS <variable_name>

我想要完成的是,在游标中,select 语句的某些 where 子句和 from 子句根据另一个 select 的结果而变化。如下所示:

select count(*) from table_name
v_cnt
where cond1;

如果 v_cnt 为 0,光标将为:

 cursor cur_name IS 
    select * from tab_name1
    where cond1;

如果 v_cnt > 0,光标将为:

    cursor cur_name IS 
    select * from tab_name2
    where cond1
    and cond2;

我想知道是否可以执行 if-else,然后 concat 将分配给光标的选择。

    cursor cur_name IS 
    select * from tab_name
    if v_cnt > 0
    where cond2;
    else 
    where cond1;

如果您需要更多详细信息,请告诉我。 感谢任何反馈。

最佳答案

为什么不使用类似的东西

select  * 
from    tab_name 
WHERE   (v_cnt = 0  AND cond1)
OR      (v_cnt > 0  AND cond2)

关于sql - oracle游标值根据条件而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12381010/

相关文章:

sql - Spring 数据 JPA。选择所有包含标签的帖子

sql - 多列(每种类型一列)与单个 TEXT/Clob 列

Oracle 过程 'out' 'table of varchar2' 类型参数

java - 在 Hibernate 中执行过程

Python 连接 Oracle 数据库

mysql - 存储过程更新所有行而不仅仅是一行

oracle - 在oracle中检查过程执行期间的错误

mysql - 如何在现有列中添加前导零?

mysql - 如何插入串联自增主键

.net - 存储过程和 LINQ、Dbml 文件无法解释结果集