CREATE OR REPLACE PROCEDURE COMPOSE
(
IDNum out NUMBER,
StationNum in NUMBER,
DeviceNum in NUMBER,
DataNum in NUMBER
)
为什么在调用的时候却给IDnum赋值一个v_out的变量呢?你又没有给v_out赋值
(
IDNum out NUMBER,
StationNum in NUMBER,
DeviceNum in NUMBER,
DataNum in NUMBER
)
为什么在调用的时候却给IDnum赋值一个v_out的变量呢?你又没有给v_out赋值
修改存储过程名字应该没关系吧。
(
IDNum out NUMBER,
StationNum in NUMBER,
DeviceNum in NUMBER,
DataNum in NUMBER
)
as
LogNum NUMBER;
begin
if StationNum > 65530 then
LogNum := StationNum;
else
SELECT 100 into LogNum
FROM dual;
end if;
IDNum := LogNum *(2**17) + DeviceNum*(2**11) + DataNUm;
end;
/
declare
v_out number;
begin
compose(v_out,1,1,1);
end;
没有问题.
DECLARE
idnum NUMBER;
BEGIN-- Now call the stored program
compose(idnum,1,1,2);-- Output the results
dbms_output.put_line('idnum = '||TO_CHAR(idnum)); COMMIT;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error '||TO_CHAR(SQLCODE)||': '||SQLERRM);
RAISE;
END;