Asp.net mvc 4 执行存储过程odp.net时发生异常
我已经用下面的代码执行了大约5个存储过程(参数因存储过程而异)。除了下面的SP之外,这些都可以正常工作。 以下代码的输出为: p_out=2 p_msg='执行时异常' 在SP中,它将进入异常块。有人能告诉我确切的问题吗 代码: 存储过程是: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
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;