数据库端
我有一个简单的程序包,其中包含一个自定义数据类型GENERIC_API_PKG.DETAILS_ROW
和一个函数GENERIC_API_PKG.GET_DETAILS_BY_ID
,该函数接受一个varchar2
参数并返回此自定义数据类型,我已经使用sql编辑器测试了其功能并且它可以正常工作,如下所示:
应用程序端
我正试图通过按此答案https://stackoverflow.com/a/47174135/932628的建议用Begin / End块包装它来调用GET_DETAILS_BY_ID(:id)
函数,但是我一直收到类似于以下错误:
在发现....时发现符号“>”等
我尝试了与以前的建议类似的多种变体,但是我无法成功调用该函数,并且不断收到相同的错误消息。
以下是我根据此答案https://stackoverflow.com/a/23200322/932628
所建议尝试的最终方案{
var oc = GetConnectionObject();
PersonDetailsEntity entity = new PersonDetailsEntity(){};
try
{
oc.Open();
var cm = GetCommandObject(Commands.Get_PersonDetails, oc);
cm.CommandType = System.Data.CommandType.StoredProcedure;
var prmIdReq = GetVarcharParam(Params.Id, id, true);
//////////////////////////////////////////////////////
cm.Parameters.Add(prmIdReq);
cm.Parameters.Add("V_REZ", OracleDbType.RefCursor, System.Data.ParameterDirection.ReturnValue);
var x = cm.ExecuteNonQuery();
//if (x.Read())
//{
// entity = QcbModelEntity.PersonDetails.Mapper.MapReaderToEntity(x);
// entity.IsFound = true;
//}
//////////////////////////////////////////////////////
oc.Close();
oc.Dispose();
return entity;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
在Commands.Get_PersonDetails
是设置为const string
的{{1}},GENERIC_API_PKG.GET_DETAILSBY_ID(:Id)
也是设置为Params.Id
的{{1}}的情况下, const string
是我返回的databse函数中自定义类型Id
的变量的名称
当我尝试执行此操作时,出现以下错误:
ORA-01008并非所有变量都已绑定
任何建议,请提出建议