Oracle Procedure编译|警告:执行完成时出现警告

时间:2018-05-24 13:59:53

标签: sql oracle stored-procedures compiler-errors procedure

我在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;

它在没有任何警告的情况下编译。

基本上,我应该为10个UPC组合(本程序中的参数)运行一个长代码(~100行),我将用我的实际代码替换上面提到的SQL代码。但是,这个基本的插入语句失败了。

提前致谢。

1 个答案:

答案 0 :(得分:3)

始终列出您用于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时,列出列名称。

警告基本上是这样说:"这不适用于当前的表定义。但我接受它是因为您可能会在将来更改定义,我真的希望通过不拒绝存储过程来帮助您。"