首页 文章

C#Sybase AseClient参数数量无效

提问于
浏览
1

我正在为下面的sql使用预准备语句

SELECT
t.baseSystem 'source',
count(t.filenumber) 'fileCount'
FROM orders t JOIN customer c ON t.customer = c.customerid
WHERE
t.entrydate = @loaddate
AND (t.baseSystem in ('GFQWE','GHOTR','EFXSDE','EBDBDL','AUTO','MDFX')
            OR t.baseSystem LIKE 'STPALLOC_%')
AND t.trdsource in (0,22)
AND t.refType NOT LIKE '%Far%'
AND c.type IN ('BANK','NBNK','BFAC')
AND t.reference NOT IN ('QDisk', 'DSSDOL', 'DEFG', 'FGYT')
GROUP BY t.baseSystem

UNION

SELECT
CASE 
            WHEN t.baseSystem = 'GFQWE' THEN 'FGQC'
            WHEN t.baseSystem = 'GHOTR' THEN 'OUY UI'
            ELSE t.baseSystem
END 'source',
count(t.filenumber) 'fileCount'
FROM orders t JOIN customer c ON t.customer = c.customerid
WHERE
t.entrydate = @loaddate
AND t.baseSystem in ('GFQWE','GHOTR')
AND t.broker = 'P'
AND t.trdsource in (0,22)
AND t.refType NOT LIKE '%Far%' 
AND c.type IN ('BANK','NBNK','BFAC')
AND t.reference NOT IN ('QDisk', 'DSSDOL', 'DEFG', 'FGYT')
GROUP BY
CASE 
                WHEN t.baseSystem = 'GFQWE' THEN 'FGQC'
                WHEN t.baseSystem = 'GHOTR' THEN 'OUY UI'
                ELSE t.baseSystem
END

C#代码

DataTable result = new DataTable();
AseConnection aseConnection = GetAseConnection(connection);
try
{
      AseCommand command = new AseCommand(sql, aseConnection);
      command.CommandText = sql;
      AseParameter parameter = new AseParameter("@loaddate", strDate);
      command.Parameters.Add(param);
      command.Prepare();
      using (AseDataAdapter adapter = new AseDataAdapter(command))
      {
          adapter.Fill(result);
      }
 }
 finally
 {
      aseConnection.Close();
  }
  return result;

此代码在我的本地工作正常,但在服务器上抛出以下错误 . 因为我无法在我的本地重现相同的错误,所以很难过 .

Sybase.Data.AseClient.AseException:参数数量无效 . 在Sybase.Data.AseClient1.AseCommand.CheckResult(的Int32 RES)在Sybase.Data.AseClient1.AseCommand.SetCommandStatement(的CommandBehavior的CommandBehavior)在Sybase.Data.AseClient1.AseCommand.Execute(的CommandBehavior的CommandBehavior)在Sybase.Data.AseClient1.AseCommand位于System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader的Sybase.Data.AseClient.AseCommand.ExecuteDbDataReader(CommandBehavior行为)的Sybase.Data.AseClient1.AseCommand.ExecuteReader(CommandBehavior commandBehavior)上的._ExecuteReader(CommandBehavior commandBehavior)在System.Data.Common.DbDataAdapter.FillInternal(的CommandBehavior行为)(数据集的数据集,数据表[]数据表,的Int32 startRecord,的Int32最大记录,字符串srcTable要,IDbCommand的命令,的CommandBehavior行为)在System.Data.Common.DbDataAdapter.Fill(数据表System.Data.Common.DbDataAdapter.Fill上的[] dataTables,Int32 startRecord,Int32 maxRecords,IDbCommand命令,CommandBehavior行为)(DataTable dataTable)

1 回答

相关问题