我正在尝试使用C#执行一个包含1个输入参数和2个输出参数的Oracle存储过程。
我的表格包含3列:一个整数id
和两个varchar2类型的列。
以下是表格定义:
CREATE TABLE TESTTABLE
(
ID INT Not Null,
FNAME VARCHAR2(200),
LNAME VARCHAR2(200),
Constraint PK Primary Key (ID)
);
这是我的存储过程:
create or replace PROCEDURE TESTP
(
tempID IN TESTTABLE.ID%Type,
tempName Out TESTTABLE.NAME%TYPE,
tempLName out TESTTABLE.LNAME%TYPE
)
AS
BEGIN
select Name, LNAME
into tempName, tempLName
from TestTable
where ID = tempID;
END;
以下是从C#执行此过程的代码:
try
{
Int32 id = 1;
string FName = "", LName = "";
using (_ora.GetOracleConnection())
{
Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand("TESTP", _ora.GetOracleConnection());
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("tempId", Oracle.DataAccess.Client.OracleDbType.Int32,ParameterDirection.Input).Value = id;
cmd.Parameters.Add("tempName", Oracle.DataAccess.Client.OracleDbType.Varchar2,200,ParameterDirection.Output).Value = FName;
cmd.Parameters.Add("tempLName", Oracle.DataAccess.Client.OracleDbType.Varchar2,200,ParameterDirection.Output).Value = LName;
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
这是生成的异常:
有人可以帮我吗?Oracle.DataAccess.Client.OracleException ORA-06502: PL/SQL:数值或值错误
ORA-06512:位于“USMANDBA.TESTP”,第9行
_ora.GetOracleConnection()
的代码吗? - Felipe Oriani