Skip to content

ADO执行Oracle存储过程异常,原因为ParameterName中多了冒号前缀 #739

Closed
@ecocom

Description

@ecocom

代码片段:

User u = fsql.Ado.CommandFluent("pkg_test.getUserByOID")
    .CommandType(System.Data.CommandType.StoredProcedure)
    .WithParameter("v_userOID", 10000)
    .WithParameter("v_refCur", null, p => {
        ((OracleParameter)p).OracleDbType = OracleDbType.RefCursor;
        p.Direction = System.Data.ParameterDirection.Output;
    })
    .QuerySingle<User>();

异常信息:
ORA-01008: 并非所有变量都已绑定

实际该存储过程就是那两个参数,调试后发现是 ParameterName 多了前缀冒号引起的(分别为 :v_userOID:v_refCur)。
目前解决办法:

User u = fsql.Ado.CommandFluent("pkg_test.getUserByOID")
    .CommandType(System.Data.CommandType.StoredProcedure)
    .WithParameter("v_userOID", 10000, p => {
        p.ParameterName = "v_userOID";  // 重写 ParameterName
    })
    .WithParameter("v_refCur", null, p => {
        p.ParameterName = "v_refCur";  // 重写 ParameterName
        ((OracleParameter)p).OracleDbType = OracleDbType.RefCursor;
        p.Direction = System.Data.ParameterDirection.Output;
    })
    .QuerySingle<User>();

期待未来版本内解决。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions