Asp.net mvc 4 执行存储过程odp.net时发生异常

Asp.net mvc 4 执行存储过程odp.net时发生异常,asp.net-mvc-4,stored-procedures,odp.net,Asp.net Mvc 4,Stored Procedures,Odp.net,我已经用下面的代码执行了大约5个存储过程(参数因存储过程而异)。除了下面的SP之外,这些都可以正常工作。 以下代码的输出为: p_out=2 p_msg='执行时异常' 在SP中,它将进入异常块。有人能告诉我确切的问题吗 代码: 存储过程是: create or replace PACKAGE BODY PCK_ADMIN AS PROCEDURE PROC_VALIDATE_USER (P_USERNAME IN USR_USER.USER

我已经用下面的代码执行了大约5个存储过程(参数因存储过程而异)。除了下面的SP之外,这些都可以正常工作。 以下代码的输出为: p_out=2 p_msg='执行时异常'

在SP中,它将进入异常块。有人能告诉我确切的问题吗

代码:

存储过程是:

create or replace
PACKAGE BODY PCK_ADMIN AS

PROCEDURE PROC_VALIDATE_USER
                          (P_USERNAME IN USR_USER.USERNAME%TYPE,
                           P_out  OUT NUMBER,
                           P_msg  OUT VARCHAR2) AS

 v_cnt      NUMBER(5):=0;

BEGIN

P_OUT := 0;

Select count(USERID) into v_cnt from usr_user
where username = P_USERNAME;

IF v_cnt = 0 then
  p_out := 0;
  p_msg := 'Record doesnot exists';
ELSE
  p_out := 1;
  p_msg := 'Record already exists';
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
 p_out := 2;
 p_msg := 'exception while execution';
 END PROC_VALIDATE_USER;
 END PCK_ADMIN;
usr_用户的表结构为

 USERNAME   VARCHAR2(20 BYTE)
 USERID     NUMBER

我为p_msg输出参数指定了大小,它工作了

oracleCommand.Parameters.Add("P_msg", OracleDbType.Varchar2, 50).Direction = ParameterDirection.Output;

C#
code执行SP之前。您是否尝试从SQL执行SP?-在SQL中尝试此操作:
exec(您存储的进程名)(并可能添加参数)
。还有什么异常吗?是的,它正在工作,并且它从SQL编辑器返回了预期的结果。我怀疑这些参数。好的,让我们试试这个-从SP中删除参数。在其中声明局部变量,并为测试目的硬编码数据。从C代码中,您只需调用SP。检查它是否工作。如果工作,则逐个添加参数并从代码调用。这只是为了确保传递的参数不会导致问题。我尝试了这个。但它仍然会阻止异常。当异常抛出代码时,是否检查了
内部异常
。(某些例外情况会包含更多细节)不确定发生了什么:(
oracleCommand.Parameters.Add("P_msg", OracleDbType.Varchar2, 50).Direction = ParameterDirection.Output;