Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Ошибка: выражение 'Ivan' не м.б. использовано как адресат назначения  [new]
LiQuid
Member

Откуда:
Сообщений: 483
Добрый день.
Пишу вот такой код:

CREATE OR REPLACE PROCEDURE COMBINE_AND_FORMAT_NAMES (

   first_name_in IN OUT VARCHAR2,
   last_name_in IN OUT VARCHAR2,
   name_format_in IN VARCHAR2 := 'LAST FIRST',
   full_name_out OUT VARCHAR2)
   
IS

BEGIN

   /* Преобразование имени и фамилии к верхнему регистру. */
   first_name_in := UPPER (first_name_in); 
   last_name_in := UPPER (last_name_in);
   
   /* Объединение имени и фамилии в соответствии с форматной строкой. */
   IF name_format_in = 'LAST FIRST'
   THEN
      full_name_out := last_name_in || ', ' || first_name_in;
    --  DBMS_OUTPUT.PUT_LINE(full_name_out);
   ELSIF name_format_in = 'FIRST LAST'
   THEN
      full_name_out := first_name_in || ' ' || last_name_in;
     -- DBMS_OUTPUT.PUT_LINE(full_name_out);
   END IF;
   
END;


Вызываю:
BEGIN
    COMBINE_AND_FORMAT_NAMES('Ivan', 'Ivanov','LAST FIRST', 'TEST');
END;


Oracle SQL Developer ругается:
Error starting at line : 29 in command -
BEGIN
    COMBINE_AND_FORMAT_NAMES('Ivan', 'Ivanov','LAST FIRST', 'TEST');
END;
Error report -
ORA-06550: Строка 2, столбец 30:
PLS-00363: выражение 'Ivan' не м.б. использовано как адресат назначения
ORA-06550: Строка 2, столбец 38:
PLS-00363: выражение 'Ivanov' не м.б. использовано как адресат назначения
ORA-06550: Строка 2, столбец 61:
PLS-00363: выражение 'TEST' не м.б. использовано как адресат назначения
ORA-06550: Строка 2, столбец 5:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:


Где я ошибаюсь?
16 ноя 20, 18:37    [22233221]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: выражение 'Ivan' не м.б. использовано как адресат назначения  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
DECLARE
P1 varchar2(20) := 'Ivan';
P2 varchar2(20) := 'Ivanov';
P4 varchar2(20) := 'TEST';

PROCEDURE COMBINE_AND_FORMAT_NAMES (
   first_name_in IN OUT VARCHAR2,
   last_name_in IN OUT VARCHAR2,
   name_format_in IN VARCHAR2 := 'LAST FIRST',
   full_name_out OUT VARCHAR2)
IS
BEGIN
   /* Преобразование имени и фамилии к верхнему регистру. */
   first_name_in := UPPER (first_name_in);
   last_name_in := UPPER (last_name_in);
   /* Объединение имени и фамилии в соответствии с форматной строкой. */
   IF name_format_in = 'LAST FIRST'
   THEN
      full_name_out := last_name_in || ', ' || first_name_in;
    --  DBMS_OUTPUT.PUT_LINE(full_name_out);
   ELSIF name_format_in = 'FIRST LAST'
   THEN
      full_name_out := first_name_in || ' ' || last_name_in;
     -- DBMS_OUTPUT.PUT_LINE(full_name_out);
   END IF;
END;
BEGIN
--    COMBINE_AND_FORMAT_NAMES('Ivan', 'Ivanov','LAST FIRST', 'TEST');
   COMBINE_AND_FORMAT_NAMES(P1, P2 ,'LAST FIRST', P4);
END;
/

PL/SQL procedure successfully completed.



Дальше сам разберешься?
16 ноя 20, 18:52    [22233230]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: выражение 'Ivan' не м.б. использовано как адресат назначения  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7131
Subprogram Parameter Passing Methods
16 ноя 20, 18:58    [22233240]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: выражение 'Ivan' не м.б. использовано как адресат назначения  [new]
LiQuid
Member

Откуда:
Сообщений: 483
Благодарю за помощь.
16 ноя 20, 20:09    [22233315]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить