PLSQL CASE条件

时间:2011-04-05 23:54:19

标签: sql oracle plsql oracle10g ora-00923

我有两个问题。

查询1。

PL / SQL下面不起作用。我想将输出存储到varable test1和test2中。它说没有找到ORA-00923:FROM关键字。不确定有什么问题

DECLARE    
  file_id NUMBER(10) NOT NULL :=5;
  test1   varchar(100);
  test2   varchar(100);

BEGIN

  DBMS_OUTPUT.PUT_LINE('File Id: ' || file_id);

  SELECT table_name 
    INTO test1,
         (CASE owner
            WHEN 'SYS' THEN  'The owner is SYS'
            WHEN 'SYSTEM' THEN 'The owner is SYSTEM'
          END) 
    INTO test2 
    FROM all_tables 
   WHERE rownum <= 1;

END;

查询2.

在PL / SQL中,如果我只使用没有into子句的select语句,它就不起作用了。这是我需要使用的规则吗?下面的一个不起作用。如果我想从PL / SQL程序假脱机输出,我是否需要将列的输出存储到变量中并执行dbms_output?

DECLARE

  file_id  NUMBER(10) NOT NULL :=5;
  test1 varchar(100);
  test2 varchar(100);

BEGIN

  DBMS_OUTPUT.PUT_LINE('File Id: ' || file_id);

  SELECT table_name,
         CASE owner
           WHEN 'SYS' THEN 'The owner is SYS'
           WHEN 'SYSTEM' THEN 'The owner is SYSTEM'
         END
    FROM all_tables;

END;

1 个答案:

答案 0 :(得分:7)

在PL / SQL查询中只需要一个INTO子句,例如:

SELECT table_name, CASE owner WHEN bla bla ... END
INTO test1, test2
FROM all_tables;