Процедура Oracle скомпилирована |Предупреждение: выполнение завершено с предупреждением - PullRequest
0 голосов
/ 24 мая 2018

Я создал нижеприведенную процедуру в Oracle.Он компилируется, но выдает предупреждение «выполнение завершено с предупреждением»

create or replace
PROCEDURE check_upc
  (
  upc_id1  IN VARCHAR,
  upc_id2  IN VARCHAR,
  upc_id3  IN VARCHAR 
  )
IS  
BEGIN
  insert into testing2 SELECT upc_id1,upc_id2 from dual;
END;

Но когда я изменяю оператор SQL на

insert into testing2 SELECT upc_id1,upc_id2,upc_id3 from dual;

, он компилируется без предупреждения.

По сути, я должен выполнить длинный код (~ 100 строк) для 10 комбинаций UPC (параметр в этой процедуре), для которых я заменю вышеупомянутый код SQL моим реальным кодом.Но это не удается для этого основного оператора вставки.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 мая 2018

Всегда перечисляйте столбцы, которые вы используете для update:

create or replace procedure check_upc (
  in_upc_id1  IN VARCHAR,
  in_upc_id2  IN VARCHAR,
  in_upc_id3  IN VARCHAR 
) IS  
BEGIN
  insert into testing2 (id1, id2)  -- or whatever the names are
      select in_upc_id1, in_upc_id2
      from dual;
END;

Примечания:

  • Я традиционно называю входные параметры, чтобы отличать их от локальных переменных и имен столбцов.
  • VARCHAR выглядит странно.Oracle рекомендует varchar2.
  • При использовании insert перечислить имена столбцов.

По сути, предупреждение говорит: «Это не будет работать с текущей таблицейопределение. Но я принимаю его, потому что вы можете изменить определение в будущем, и я действительно хочу помочь вам, не отклоняя хранимую процедуру. "

...