DbCommand, должен объявить ошибку переменной

Это мой код Я также добавил параметр db, но он все еще показывает ошибку (при выполнении). Должен объявить скалярную переменную

       DbCommand command;
        StringBuilder query = new StringBuilder(
                                                        @"SELECT         isnull(UpsellService_OID,'') UpsellService_OID," + Environment.NewLine +
                                                        "       isnull(ServiceName,'') ServiceName," + Environment.NewLine +
                                                        "       isnull(ServiceDescription,'') ServiceDescription," + Environment.NewLine +
                                                        "       isnull(Create_By,'') Create_By," + Environment.NewLine +
                                                        "       isnull(Create_Date,'') Create_Date," + Environment.NewLine +
                                                        "       isnull(Modify_By,'') Modify_By," + Environment.NewLine +
                                                        "       isnull(Modify_Date,'') Modify_Date," + Environment.NewLine +
                                                        "       isnull(Active_f,'') Active_f" + Environment.NewLine +
                                                        "FROM   TRGPAYROLL.ZONG.UPSELLSERVICES   " + Environment.NewLine +
                                                        "WHERE  1 = 1");
        if (!string.IsNullOrEmpty(idObject.ServiceName))
        {
            query.Append(" AND ServiceName like '%'  @ServiceName  '%'");
        }

        command = db.GetSqlStringCommand(query.ToString());
        if (!string.IsNullOrEmpty(idObject.ServiceName))
        {
            db.AddInParameter(command, "ServiceName", DbType.String, idObject.ServiceName);
        }

        return command;

2 ответа

Я бы переписал последнюю часть вашего кода таким образом

    if (!string.IsNullOrEmpty(idObject.ServiceName))
    {
        query.Append(" AND ServiceName like @ServiceName");
    }

    command = db.GetSqlStringCommand(query.ToString());
    if (!string.IsNullOrEmpty(idObject.ServiceName))
    {
        db.AddInParameter(command, "@ServiceName", DbType.String, "%" + idObject.ServiceName + "%");
    }

Подстановочный знак добавляется непосредственно к значению параметра, в то время как заполнитель параметра должен быть свободен от любых конкатенаций строк. Однако многие детали отсутствуют, чтобы быть уверенными в правильности этого ответа. В частности, я могу предположить только внутреннюю работу методов GetSqlStringCommand а также AddInParameter

@ServiceName переменная не объявлена ​​в вашем операторе SQL. Добавить в начало что-то вроде

DECLARE @ServiceName AS nchar(32)
SET @ServiceName = ....
Другие вопросы по тегам