【问题标题】:How can I test the return value of a PL/SQL variable in ODP.NET如何在 ODP.NET 中测试 PL/SQL 变量的返回值
【发布时间】:2017-03-30 00:41:21
【问题描述】:

我有这段代码执行 PL/SQL:

        using (PedidoEntities db = new PedidoEntities())
        {
            OracleParameter p_existe = new OracleParameter("p_existe", OracleDbType.Int32);
            p_existe.Direction = System.Data.ParameterDirection.ReturnValue;
            OracleParameter p_modulo = new OracleParameter("p_modulo", OracleDbType.Int32);
            p_modulo.Direction = System.Data.ParameterDirection.Input; p_modulo.Value = (int)modulo;
            OracleParameter p_usuario = new OracleParameter("p_usuario", OracleDbType.Varchar2);
            p_usuario.Direction = System.Data.ParameterDirection.Input; p_usuario.Value = usuario; p_usuario.Size = usuario.Length;
            string sql = @"begin
                             select 1 
                             into :p_existe
                             from PERMISOS P
                             inner join USUARIO U ON U.USUARIO = P.USUARIO
                             where P.MODULO = :p_modulo 
                                   and U.NOMBRE = :p_usuario;
                           exception
                             when no_data_found then
                               :p_existe := 0;
                           end;";
            db.Database.ExecuteSqlCommand(sql, p_existe, p_modulo, p_usuario);
            return p_existe.Value.Equals(1);
        }

问题是返回值是一个 INT,我需要针对 1 或 0 进行测试。我可以只使用 p_existe.Value.ToString() 并且它可以工作,但是,我想将检查作为一个数字进行,因为这是一个数字。我该怎么做?我尝试过的任何演员都不起作用。

【问题讨论】:

    标签: oracle plsql odp.net data-access


    【解决方案1】:

    最后我使用了这段代码:

    return ((OracleDecimal)p_existe.Value).Value.Equals(1)
    

    这行得通。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多