Оператор обращения Oracle PLSQL

#plsql

#plsql

Вопрос:

Почему этот оператор обращения не будет работать в pl / sql? Я пытаюсь присвоить несколько значений за один раз. Есть ли более быстрый способ присвоить несколько значений на основе приведенного ниже? Спасибо.

 DECLARE 
x number := 5;
a CHAR;
b CHAR;
c CHAR;

BEGIN 

CASE 
  WHEN x = 5 THEN a :='rx' AND b := 'rt' AND c :='ry';
  WHEN ...
  WHEN ...

END



END;
  

Комментарии:

1. Операторы разделяются точкой с запятой в PL / SQL, а не с AND помощью . Вы сделали это при объявлении переменных, что изменилось в THEN блоке?

2. Также ваш case оператор должен заканчиваться на end case; и char без размера по умолчанию char(1) , который будет слишком мал для ваших значений. И стандартный тип данных короткой текстовой строки varchar2 — лучше не использовать char никогда. (И ваш caps lock включен.)

Ответ №1:

Попробуйте это:

 DECLARE 
x NUMBER := 5;
a VARCHAR2(2);
b VARCHAR2(2);
c VARCHAR2(2);

BEGIN 
    IF(x = 5)
    THEN
        a :='rx';
        b := 'rt';
        c :='ry';
    END IF;
END;
  

Вы должны использовать ключевое слово case внутри sql-запросов, но в этом сценарии, когда вы хотите задать переменные, вам нужно использовать оператор If Then .