C# Sybase AseClient Недопустимое количество параметров

Я использую подготовленный оператор для 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

код С#

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 ._ExecuteReader(CommandBehavior commandBehavior) в Sybase.Data.AseClient1.AseCommand.ExecuteReader(CommandBehavior commandBehavior) в Sybase.Data.AseClient.AseCommand.ExecuteDbDataReader(CommandBehavior поведение) в System.Data.Common.DbCommand.System.Data.IDbCommand.Execute (Поведение CommandBehavior) в System.Data.Common.DbDataAdapter.FillInternal (набор данных DataSet, таблицы данных DataTable [], Int32 startRecord, Int32 maxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataTable [] dataTables, Int32 startRecord, Int32 maxRecords, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)


person SDF    schedule 27.04.2017    source источник
comment
Вы подтвердили, что база данных на сервере имеет ту же схему?   -  person Kevin Raffay    schedule 27.04.2017
comment
да, я пытался запустить его на той же базе данных с моего локального компьютера, и он работает, но вылетает при запуске на сервере   -  person SDF    schedule 27.04.2017


Ответы (1)


Добавление ;NamedParameters=false в строку подключения, как указано в приведенной ниже ссылке, сработало для меня.

Проблемы с запуском Sybase SQL Script из C# - слишком много параметров

person LuisM    schedule 07.12.2017