C# ORA-06502:PL/SQL:数字或值错误:从数据库获取数据时发生字符到数字的转换错误
我想执行一个表并从数据库中获取它的数据。因此,我调用一个存储过程,如下所示:-C# ORA-06502:PL/SQL:数字或值错误:从数据库获取数据时发生字符到数字的转换错误,c#,asp.net,oracle,stored-procedures,C#,Asp.net,Oracle,Stored Procedures,我想执行一个表并从数据库中获取它的数据。因此,我调用一个存储过程,如下所示:- 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 GETS
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;
并将其数据填入数据表中
但我也有错误
ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误
在这条线上
da.Filldt
我不知道为什么会出现此错误。请修改以下更改: 其中SAP_ID=将p_SAPID转换为NVARCHAR230 或 将变量声明为:
P_SAPID在nvarhar230中,您能检查SAP_ID数据类型吗?请按以下方法修改:其中SAP_ID=将P_SAPID转换为nvarhar230;或者在NVARCHAR230中将变量声明为:P_SAPID,@SinghKailash:yes done,谢谢kailash。。现在它开始工作了,为什么当SAP_ID数据类型为nvarhar230时,您要在数字中声明P_SAPID?您应该在NVARCHAR2中声明P_SAPID,或者在R4G_OSP.ENODEB.SAP_ID%类型中声明更好的P_SAPID谢谢Kailash singh:
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;
}