我想执行一个table
并从database
获取其数据。所以我正在调用如下的存储过程:-
PROCEDURE GETSAPIDINFO
(
P_SAPID IN NUMBER,
OUTPUTTABLE OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN OUTPUTTABLE FOR
SELECT SAP_ID, STATE,LATITUDE, LONGITUDE FROM R4G_OSP.ENODEB
WHERE SAP_ID = P_SAPID;
END GETSAPIDINFO;
并将其数据填充到datatable
public DataTable ExecuteDataTable()
{
DataTable dt = null;
try
{
if (this.OpenConnection())
{
this._oracleCommand.Connection = this._oracleConnection;
this._oracleCommand.Parameters.Add(new OracleParameter("OUTPUTTABLE", OracleDbType.RefCursor, ParameterDirection.Output));
dt = new DataTable();
OracleDataAdapter da = new OracleDataAdapter(this._oracleCommand);
da.Fill(dt);
da.Dispose();
this._htblOutParamenter = new Hashtable();
foreach (OracleParameter op in this._oracleCommand.Parameters)
{
if (op.Direction == ParameterDirection.InputOutput)
this._htblOutParamenter.Add(op.ParameterName, (object)op.Value.ToString());
}
this.CloseConnection();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
this.CloseConnection();
}
return dt;
}
但我收到错误消息
ORA-06502:PL / SQL:数字或值错误:字符到数字的转换错误
在此行
da.Fill(dt);
我不知道为什么会收到此错误。
答案 0 :(得分:1)
请修改以下更改:
SAP_ID = CAST(P_SAPID AS NVARCHAR2(30));
OR
将变量声明为: P_SAPID IN NVARCHAR2(30),