OracleDbType中的布尔值

时间:2016-08-25 18:29:18

标签: c# oracle entity-framework stored-procedures

什么是Oracle等效的布尔值?我有这个函数,我需要将onlineFiling作为bool传递给存储过程,但显然Oracle在其OracleDbType中没有布尔值。我该怎么做呢?谢谢

public List<MModel> GetReportData(DateTime startDateTime, DateTime endDateTime, bool onlineFiling)
        {
            var managementModel = new List<ManagementModel>();
            var oracCmd = new OracCommand(1);
            oracCmd.AddInParameter(OracleDbType.Date, "I_STARTDATE", startDateTime));
            oracCmd.AddInParameter(OracleDbType.Date, "I_ENDDATE", endDateTime));
            oracCmd.AddInParameter(OracleDbType.???, "I_ONLINE", onlineFiling));
//rest of code here

2 个答案:

答案 0 :(得分:1)

查看Data Provider for .NET Developer's Guide处的Oracle Data Provider文档。 ODP似乎不支持布尔值。

一种选择可能是使用Char代替Number代替1/0。

另外你应该看看以下SO帖子:

"Boolean" parameter for Oracle stored procedure

How to pass boolean parameter to Oracle procedure C#

答案 1 :(得分:0)

这取决于您正在调用的存储过程,但它通常使用二进制类型的ORACLE参数。

public List<MModel> GetReportData(DateTime startDateTime, DateTime endDateTime, bool onlineFiling)
{
    var managementModel = new List<ManagementModel>();

    var oracCmd = new OracCommand(1);
    oracCmd.AddInParameter(OracleDbType.Date, "I_STARTDATE", startDateTime));
    oracCmd.AddInParameter(OracleDbType.Date, "I_ENDDATE", endDateTime));
    oracCmd.AddInParameter(OracleDbType.BinaryDouble, "I_ONLINE", onlineFiling));

    //rest of code here

但是你必须确保返回哪种类型并将结果转换为正确的类型。