如何解决对Oracle11g的EF CORE调用的输出参数上的“数字或值错误”
我遵循了所有可以获得的在线帮助,并提出了以下建议:
存储过程:
~
在.Net CORE上,我有这些:
create or replace procedure proc_cmap_unit_test
(
param1 in varchar2,tkn out varchar2
) as
begin
select 'hello' into tkn from dual;
null;
end proc_cmap_unit_test;
运行代码后,我得到了这个愚蠢的错误:
ORA-06502:PL / SQL:数字或值错误
有人可以告诉我我想念什么吗?谢谢!
解决方法
我不知道您使用的工具,但是-就Oracle而言,它是这样的:
您的程序:
SQL> CREATE OR REPLACE PROCEDURE proc_cmap_unit_test (param1 IN VARCHAR2,2 tkn OUT VARCHAR2)
3 AS
4 BEGIN
5 SELECT 'hello' INTO tkn FROM DUAL;
6
7 NULL;
8 END proc_cmap_unit_test;
9 /
Procedure created.
测试:
SQL> SET SERVEROUTPUT ON
SQL>
SQL> DECLARE
2 l_out VARCHAR2 (10); --> this! "hello" fits in here
3 BEGIN
4 proc_cmap_unit_test ('a',l_out);
5 DBMS_OUTPUT.put_line (l_out);
6 END;
7 /
hello
PL/SQL procedure successfully completed.
但是,如果应该接受过程的OUT
参数值的变量太小,它将失败:
SQL> DECLARE
2 l_out VARCHAR2 (1); --> this! "hello" can't fit
3 BEGIN
4 proc_cmap_unit_test ('a',l_out);
5 DBMS_OUTPUT.put_line (l_out);
6 END;
7 /
DECLARE
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "DP_4005.PROC_CMAP_UNIT_TEST",line 5
ORA-06512: at line 4
SQL>
查看是否响起有关您工具的铃声。祝你好运!
,问题已解决:
由于某种原因,我必须显式设置输出变量的大小。
token.Size = '10';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。