繁体   English   中英

ORA-01008:并非所有变量都绑定在C#中

[英]ORA-01008: not all variables bound in C#

我编写的代码如下:

        var query = @"SELECT t0.ACT_TYPE, t0.ST_DT,t0.AC_ST_DT  FROM ACTIVITY  t0 WHERE (t0.AC_ST_DT > :p0 OR t0.ST_DT > :p0) AND t0.ACT_TYPE = :p1";
        OracleConnection connection = new OracleConnection(cs);
        try
        {              
            connection.Open();
            OracleCommand cmd = new OracleCommand(query, connection);
            OracleDataAdapter oda = new OracleDataAdapter(cmd);
            OracleParameter pp = new OracleParameter();

            DateTime date = new DateTime(2016, 01, 01);
            OracleParameter dp = new OracleParameter();
            dp.OracleDbType = OracleDbType.Date;
            dp.ParameterName = "p0";
            dp.Value = date;
            cmd.Parameters.Add(dp);

            var sp = new OracleParameter();
            sp.OracleDbType = OracleDbType.Varchar2;
            sp.ParameterName = "p1";
            sp.Value = "SC";
            cmd.Parameters.Add(sp);
            var dt = new DataTable();
            oda.Fill(dt);
            cmd.Dispose();
        }
        finally
        {
            connection.Close();
        }

我收到的错误类似于ORA-01008:并非所有变量都已绑定

有人可以帮我解决这个问题。

我认为不可能以这种方式重用位置参数。 而是使用三个真实参数,然后将它们绑定:

var query = @"SELECT t0.ACT_TYPE, t0.ST_DT,t0.AC_ST_DT  FROM ACTIVITY  t0 WHERE (t0.AC_ST_DT > :p0 OR t0.ST_DT > :p1) AND t0.ACT_TYPE = :p2";
OracleConnection connection = new OracleConnection(cs);
try
{              
    connection.Open();
    OracleCommand cmd = new OracleCommand(query, connection);
    OracleDataAdapter oda = new OracleDataAdapter(cmd);
    OracleParameter pp = new OracleParameter();

    DateTime date = new DateTime(2016, 01, 01);

    OracleParameter dp1 = new OracleParameter();
    dp1.OracleDbType = OracleDbType.Date;
    dp1.ParameterName = "p0";
    dp1.Value = date;
    cmd.Parameters.Add(dp1);

    OracleParameter dp2 = new OracleParameter();
    dp2.OracleDbType = OracleDbType.Date;
    dp2.ParameterName = "p1";
    dp2.Value = date;
    cmd.Parameters.Add(dp2);

    var sp = new OracleParameter();
    sp.OracleDbType = OracleDbType.Varchar2;
    sp.ParameterName = "p2";
    sp.Value = "SC";
    cmd.Parameters.Add(sp);

    var dt = new DataTable();
    oda.Fill(dt);
    cmd.Dispose();
}
finally
{
    connection.Close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM