【问题标题】:IF-ELSE issue in Select Statement in OracleOracle 中 Select 语句中的 IF-ELSE 问题
【发布时间】:2012-11-01 16:22:10
【问题描述】:

我在 SQL Server 中有以下查询,我正在尝试将其转换为 Oracle 11g。

IF '[Param.1]' = 'S' OR '[Param.1]' = 'T' THEN
select * from ULQUEUE
END IF

但是当我在 Oracle 中编写相同的查询时,它会给出错误说明 Invalid SQL Statement。那么如何在 Oracle 的 Select 语句中加入 IF-ELSE 呢?

【问题讨论】:

    标签: oracle select if-statement


    【解决方案1】:

    您正在转换 T-SQL 语句。 Oracle 中的等价物是匿名 PL/SQL 块。

    但是,PL/SQL 比 T-SQL 要求更高一些。它需要将行选择为变量。如果查询将返回多行,我们需要定义一个集合变量或使用游标。

    根据您的要求,您可以使用以下内容:

    begin
        if ( &&param1 = 'S' or &&param1 = 'T' ) then
            for lrec in ( select * from ulqueue ) loop
               do_something;
            end loop;
        end if;
    end;
    /   
    

    我同意这看起来比 T-SQL 工作更多,但 PL/SQL 是一种具有更多功能的适当编程语言。 Find out more

    【讨论】:

    • 谢谢。但是如何显示查询结果:select * from ulqueue .. 我的要求是,当我将 Param.1 作为“S”或“T”传递时,查询应该显示ULQUEUE 表的所有字段。
    • 你是怎么运行这个的?客户是什么?
    • 我正在通过 SAP MII 查询编辑器运行它。
    猜你喜欢
    • 2014-11-03
    • 2014-02-15
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多