为什么使用声明语句和参数添加到命令对象的查询是使用库15.5但是不使用库15.7?

时间:2018-02-22 21:20:55

标签: c# sybase

我很少有应用程序使用Sybase并使用Sybase.Data.AseClient库的15.5版本而没有任何问题。最近我将Sybase提供程序更新到15.7版并开始接收异常。下面是简化的C#代码,它使用查询中的declare语句以及添加到AseCommand对象的AseParameter。代码正在使用库15.5(2.155.8000.0),但是返回AseException“必须使用库15.7(2.157.104.0)声明变量'@customer'”

任何信息或想法?

    string sql = @"
declare @purchaseDate datetime
set @purchaseDate = convert(varchar(10), getdate(), 101)
select count(*) from purchases where customer = @customer and purchaseDate > @purchaseDate
";

using (AseConnection cnn = new AseConnection(cnnStr))
{
    cnn.Open();
    using (AseCommand cmd = cnn.CreateCommand())
    {
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = sql

        AseParameter par = cmd.CreateParameter();
        par.ParameterName = "@customer";
        par.Direction = ParameterDirection.Input;
        par.AseDbType = AseDbType.VarChar;
        par.Size = 30;
        par.Value = customerId;
        cmd.Parameters.Add(par);

        int cnt = Convert.ToInt32(cmd.ExecuteScalar());
    }
}

0 个答案:

没有答案