tac*_*cos 9 c# oracle ado.net odac dapper
编辑:使用Execute方法而不是Query/ QueryMultiple方法,我的OUT_SUCCESS参数现在有一个AttachedParam带有OracleParameter返回值的with .因此,如果我只需要检索非游标参数,那么这将起作用.然后我可以使用Execute所有非游标输出参数的程序和Query/ 只QueryMultiple用于光标输出参数的程序.但是,如果我需要调用已存储的过程既光标和非游标输出参数,这是常有的情况?
使用Dapper.NET和OracleDynamicParameters类我已经成功返回并映射了多个IN OUT REF CURSORs,但是我无法获得单个OUT参数的值.
例如,我试图使用以下规范调用存储过程:
PROCEDURE DO_SOMETHING (
OUT_SUCCESS OUT VARCHAR2
)
Run Code Online (Sandbox Code Playgroud)
为此我创建了一个相应的C#类来对其进行建模,其中包含获取OracleDynamicParameters,CommandText等等的方法,还包括每个参数的自动实现属性
public class DO_SOMETHING {
... //code to return parameters, etc
public string OUT_SUCCESS { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下所有语法:
using (var gridReader = Connection.QueryMultiple(nModel.CommandText(), param: nModel.DynamicParameters(), commandType: nModel.CommandType()))
{
OUT_SUCCESS = ((OracleDynamicParameters)Model.DynamicParameters()).Get<string>("OUT_SUCCESS"); // 1
OUT_SUCCESS = gridReader.Read<string>().Single(); //2
OUT_SUCCESS = gridReader.Read<DO_SOMETHING>().Single().OUT_SUCCESS; //3
}
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用:
AttachedParam是null与名称的参数"OUT_SUCCESS"(虽然我可以看到参数存在)gridReader该"序列不包含任何元素",可能是因为它不知道如何读一个串出响应的报告.InvalidArgumentException:gridReader建议我"当使用多映射API确保你设置splitOn参数,如果你有Id以外的键",但我不确定这是如何与我的问题相关.顺便说一句,我知道该过程成功执行,因为ODP.NET不会产生异常,我看到结果行在数据库中持久存在.
我不知道如何继续,但我真的很想使用Dapper,因为这是最后一次攀登的障碍.任何帮助总是受到赞赏.
| 归档时间: |
|
| 查看次数: |
4658 次 |
| 最近记录: |