【问题标题】:dapper and running stored procedure ctx_ddl.sync_indexdapper 和运行存储过程 ctx_ddl.sync_index
【发布时间】:2020-09-23 18:03:51
【问题描述】:

我需要在 Oracle 数据库上执行存储过程 ctx_ddl.sync_index。在查询程序中这是可行的;

EXECUTE ctx_ddl.sync_index('MyIndex');

当我尝试使用以下内容在 dapper 中运行时;

using var connect = new OracleConnection(conString);
var results = connect.Execute("ctx_ddl.sync_index", "MyIndex", commandType: CommandType.StoredProcedure);

它给了我以下错误:

ORA-06550:第 1 行,第 7 列:PLS-00306:错误的数量或类型 调用“SYNC_INDEX”的参数

我做错了什么?

【问题讨论】:

    标签: oracle stored-procedures dapper


    【解决方案1】:

    不要将“MyIndex”作为字符串传递,试试这个:

    using var connect = new OracleConnection(conString);
    
    var p = new OracleDynamicParameters();
    p.Add("THENAMEOFYOURPARAMETER", dbType: OracleDbType.THETYPEOFYOURPARAMETER, direction: ParameterDirection.Input);
    
    var results = connect.Execute("ctx_ddl.sync_index", param:p, commandType: CommandType.StoredProcedure);
    

    【讨论】:

    • 愚蠢的问题:OracleDynamicParameters 在什么命名空间/NuGet 中?
    • 不傻。。应该在Dapper,但我这里没有VS来验证。
    • 所以它不在 Dapper 中,但我确实在 Dapper.Oracle.DynamicParameter 中找到了它。问题是它自 2018 年以来没有更新。我正在运行 .NET Core,这给 Oracle.ManagedDataAccess.Core 带来了版本问题
    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多