PLSQL CASE ПРИ УСЛОВИЯХ - PullRequest
       20

PLSQL CASE ПРИ УСЛОВИЯХ

2 голосов
/ 06 апреля 2011

У меня два запроса.

Запрос 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, если я просто использую оператор выбора без в выражении, это не работает.Это правило, которое мне нужно использовать в предложении.Ниже один не работает.Если я хочу буферизовать вывод из программы 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 Ответ

7 голосов
/ 06 апреля 2011

В запросе PL / SQL требуется только одно предложение INTO, например:

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