oracle 执行有返回值的存储过程报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 执行有返回值的存储过程报错相关的知识,希望对你有一定的参考价值。
存储过程定义如下:CREATE OR REPLACE PROCEDURE GET_PLG_LCM_BOXNO (
P_ORG IN NUMBER,
P_SN IN VARCHAR2,
P_PARTNO IN VARCHAR2,
P_Model IN VARCHAR2,
P_PN IN VARCHAR2,
P_USER IN NUMBER,
P_WSID IN NUMBER,
P_BOXNO OUT VARCHAR2,
P_BOXNO_NOTE OUT VARCHAR2,
P_RET OUT NUMBER,
P_MSG OUT VARCHAR2)
调用test Windows 执行如下语句
declare
-- Local variables here
--i integer;
P_BOXNO VARCHAR2;
P_BOXNO_NOTE VARCHAR2;
P_RET NUMBER;
P_MSG VARCHAR2;
begin
-- Test statements here
GET_PLG_LCM_BOXNO(40,'DG1H0571400015','SP.40U01G001','DPX1051','SP40U01G001',29345,10782,P_BOXNO, P_BOXNO_NOTE ,P_RET,P_MSG);
dbms_output.put_line(P_BOXNO,P_BOXNO_NOTE,P_RET,P_MSG);
-- dbms_output.put_line();
end;
报错,第五行第19个栏位字符长度必须限制在下列范围内(1...32767);
第6.8行都是这样的错,还有第12行第3个栏位呼叫put_line时应用的参数数目或者类型错误
P_BOXNO_NOTE VARCHAR2(1024);
P_MSG VARCHAR2(1024);
DBMS_OUTPUT.PUT_LINE(P_BOXNO || P_BOXNO_NOTE || P_RET || P_MSG);追问
那第12行的错误呢?
那12行的错误呢?
追答存储过程GET_PLG_LCM_BOXNO不全,先把varchar2定义的问题都改了看看
本回答被提问者和网友采纳oracle执行存储过程或触发器报错:01403. 00000 -“ no data found“
1.问题原因:
存储过程中的,select a.xx(字段) into 变量名 from a(表名)where …。当语句中查询的数据为null时,返回的数据为空就会报错。
2.解决办法:
在对应语句结束;分号后面增加exception when data_no_found 进行异常捕捉处理。
例如:select a.xx into 变量名 from a where id =1;exception when data_no_found then DBMS_OUTPUT.PUT_LINE(‘不存在数据’); return;
————————————————
版权声明:本文为CSDN博主「good_good_xiu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/good_good_xiu/article/details/115078737
以上是关于oracle 执行有返回值的存储过程报错的主要内容,如果未能解决你的问题,请参考以下文章