一尘不染

条件时的PLSQL情况

sql

我有两个查询。

查询1。

下面的PL / SQL无法正常工作。我想将输出存储到变量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中,如果我不使用select语句而没有into子句,则它不起作用。这是我需要使用into子句的规则。以下一项不起作用。如果我想假脱机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;

阅读 154

收藏
2021-05-30

共1个答案

一尘不染

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

SELECT table_name, CASE owner WHEN bla bla ... END
INTO test1, test2
FROM all_tables;
2021-05-30