--假设存储过程 B(i_var1 in number, o_var2 out number); --A存储过程调用 create or replace procedure A as v_var2 number := 0; v_var2 number := 0; begin B(v_var1,v_var2); --需要什么参数传什么参数就可以了 end;
create PROCEDURE proc_saveStorageItem ( storageid IN NUMBER, weight IN float, orderformid IN varchar2, itemnum IN NUMBER ) as sourcecode varchar2 :=''; BEGIN declare i number; i:=1; while i<=itemnum loop insert into z_storageitem (storageid,weight,sourcecode,orderformid) values(storageid,weight,proc_findID('sourcecode',sourcecode),orderformid); end loop;END;可否帮我看一下,这是如何的错,谢谢啊!
--1、i一直是1,死循环了。 --2、proc_findID('sourcecode',sourcecode) 先写他再用值。 --3、内层里面有declare 但是没有bengin end --5、定义变量的时候不要和表的字段名称定义成一样的,会产生意想不到的错误CREATE PROCEDURE PROC_SAVESTORAGEITEM(STORAGEID IN NUMBER, WEIGHT IN FLOAT, ORDERFORMID IN VARCHAR2, ITEMNUM IN NUMBER) AS V_SOURCECODE VARCHAR2 := ''; --这里我改了 BEGIN DECLARE I NUMBER; BEGIN --这里我改了 I := 1;
WHILE I <= ITEMNUM LOOP PROC_FINDID('sourcecode', V_SOURCECODE); --这里我改了 INSERT INTO Z_STORAGEITEM (STORAGEID, WEIGHT, SOURCECODE, ORDERFORMID) VALUES (STORAGEID, WEIGHT, V_SOURCECODE, ORDERFORMID); --这里我改了。
i := i + 1; --这里我改了 END LOOP; END; END;
// 大概的步骤declare i number, o numberbeginproc(i,o);dbms_output.putline(o);end;
--假设存储过程 B(i_var1 in number, o_var2 out number);
--A存储过程调用
create or replace procedure A
as
v_var2 number := 0;
v_var2 number := 0;
begin
B(v_var1,v_var2); --需要什么参数传什么参数就可以了
end;
(
storageid IN NUMBER,
weight IN float,
orderformid IN varchar2,
itemnum IN NUMBER
)
as
sourcecode varchar2 :='';
BEGIN
declare i number;
i:=1;
while i<=itemnum loop
insert into z_storageitem (storageid,weight,sourcecode,orderformid) values(storageid,weight,proc_findID('sourcecode',sourcecode),orderformid);
end loop;END;可否帮我看一下,这是如何的错,谢谢啊!
--1、i一直是1,死循环了。
--2、proc_findID('sourcecode',sourcecode) 先写他再用值。
--3、内层里面有declare 但是没有bengin end
--5、定义变量的时候不要和表的字段名称定义成一样的,会产生意想不到的错误CREATE PROCEDURE PROC_SAVESTORAGEITEM(STORAGEID IN NUMBER,
WEIGHT IN FLOAT,
ORDERFORMID IN VARCHAR2,
ITEMNUM IN NUMBER) AS
V_SOURCECODE VARCHAR2 := ''; --这里我改了
BEGIN
DECLARE
I NUMBER;
BEGIN --这里我改了
I := 1;
WHILE I <= ITEMNUM LOOP
PROC_FINDID('sourcecode', V_SOURCECODE); --这里我改了
INSERT INTO Z_STORAGEITEM
(STORAGEID, WEIGHT, SOURCECODE, ORDERFORMID)
VALUES
(STORAGEID, WEIGHT, V_SOURCECODE, ORDERFORMID); --这里我改了。
i := i + 1; --这里我改了
END LOOP;
END;
END;
i number,
o numberbeginproc(i,o);dbms_output.putline(o);end;