Dapper 无法运行程序并返回异常 PLS-00221
Posted
技术标签:
【中文标题】Dapper 无法运行程序并返回异常 PLS-00221【英文标题】:Dapper cannot run procedure and return exceptions PLS-00221 【发布时间】:2021-07-23 20:32:08 【问题描述】:我在 Oracle 中有包含流水线功能的包。该功能起作用。但我无法通过 Dapper 运行此程序。
如果我使用下一个代码,我会得到结果。
var hostname = "calculation_workers";
var functionName = "MURR_IMPORT.MURR_TASKS.GET_ALL_SERVICES";
var parameters = new OracleDynamicParameters();
parameters.Add("inHostName", hostname, OracleMappingType.Varchar2, ParameterDirection.Input);
var result = dbConnection.Query<DbHostsMap>("SELECT * FROM MURR_IMPORT.MURR_TASKS.GET_ALL_SERVICES(:inHostName)",
parameters,
commandType: CommandType.Text);
如果我尝试使用 CommandType.StoredProcedure,则会收到异常 PLS-00221: 'GET_ALL_SERVICES' is not a procedure or undefined
var hostname = "calculation_workers";
var functionName = "MURR_IMPORT.MURR_TASKS.GET_ALL_SERVICES";
var parameters = new OracleDynamicParameters();
parameters.Add("inHostName", hostname, OracleMappingType.Varchar2, ParameterDirection.Input);
//Here I get the exception
var result = dbConnection.Query<DbHostsMap>(functionName,
parameters,
commandType: CommandType.StoredProcedure);
如何解决 PLS-00221 的问题?
【问题讨论】:
【参考方案1】:你需要用table()
包裹它:
SELECT *
FROM table(MURR_IMPORT.MURR_TASKS.GET_ALL_SERVICES(:inHostName))
【讨论】:
以上是关于Dapper 无法运行程序并返回异常 PLS-00221的主要内容,如果未能解决你的问题,请参考以下文章
由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序