SQL Oracle ошибка ORA-06550, обнаружен символ «SQLDEVBIND1Z_1» - PullRequest
1 голос
/ 02 мая 2020

У меня есть очень простая процедура в Oracle 18 c, которая прекрасно компилируется

 CREATE OR REPLACE PROCEDURE quera_vcelar
(v_cislo_ula IN INFORMACIE_ULOV.cislo_ula%TYPE,
v_meno        OUT VARCHAR2,
v_bydlisko    OUT UDAJE_VCELAROV.bydlisko%TYPE)
IS
BEGIN
    SELECT meno || ' ' || priezvisko,bydlisko
        INTO v_meno,v_bydlisko
    FROM UDAJE_VCELAROV uv JOIN INFORMACIE_ULOV iu ON(uv.cislo_ula = iu.cislo_ula)
    WHERE iu.cislo_ula = v_cislo_ula;
END quera_vcelar;
/

Но после того, как я инициализирую переменные и пытаюсь запустить ее

VARIABLE p_meno VARCHAR2(30)
VARIABLE p_bydlisko VARCHAR2(20)
EXECUTE quera_vcelar(10, :p_meno :p_bydlisko);
PRINT p_meno p_bydlisko;

Я получаю эту ошибку

Error starting at line : 17 in command -
BEGIN quera_vcelar(10, :p_meno :p_bydlisko); END;
Error report -
ORA-06550: line 1, column 42:
PLS-00103: Encountered the symbol "SQLDEVBIND1Z_1" when expecting one of the following:

   . ( ) , * @ % & = - + < / > at in is mod remainder not rem =>
   <an exponent (**)> <> or != or ~= >= <= <> and or like like2
   like4 likec between || multiset member submultiset
The symbol "." was substituted for "SQLDEVBIND1Z_1" to continue.
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Я нигде не смог найти ответа, к сожалению.

1 Ответ

1 голос
/ 02 мая 2020

Я думаю, что в вашем вызове процедуры отсутствует запятая.

EXECUTE quera_vcelar(10, :p_meno  :p_bydlisko)  -- wrong
EXECUTE quera_vcelar(10, :p_meno, :p_bydlisko)  -- correct

Вполне возможно, что кто-то закроет ваш вопрос, поскольку это всего лишь опечатка. Я надеюсь, что он останется открытым некоторое время, поскольку я нахожу бит SQLDEVBIND1Z_1 очень жутким (как заметил и @Barbados). Похоже, что это функция SQLcl для защиты литералов, но мне нужно прочитать больше, поскольку я никогда не видел ее раньше.

...