我在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代码。但是,这个基本的插入语句失败了。
提前致谢。
答案 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
时,列出列名称。警告基本上是这样说:"这不适用于当前的表定义。但我接受它是因为您可能会在将来更改定义,我真的希望通过不拒绝存储过程来帮助您。"