ORA-06502:PL / SQL:数字或值错误:从数据库获取数据时字符到数字的转换错误

时间:2018-06-21 10:15:44

标签: c# asp.net oracle stored-procedures

我想执行一个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);

我不知道为什么会收到此错误。

1 个答案:

答案 0 :(得分:1)

请修改以下更改:

SAP_ID = CAST(P_SAPID AS NVARCHAR2(30));

OR

将变量声明为: P_SAPID IN NVARCHAR2(30),