Запрос на объединение по левой стороне и ‘ret’ не является распознанной ошибкой имени встроенной функции

#c# #sql

#c# #sql

Вопрос:

У меня есть запрос для FillGrid

 return DalCommon.OpenSql(@"SELECT ret.*, sli.sliContractNumberInt, sli.sliVCodeBi&, con.conNameStr 
                                    FROM SLA.Return ret(nolock)
                                    left join SAL.SalesInvoice sli(nolock) on con.conVCodeInt=sli.sliconVCodeInt
                                    left join APP.APP_TBL_Contacts con(nolock) on con.conVCodeInt=sli.sliconVCodeInt
                              
                              Where(@retVCodeBi&=0 OR retVCodeBi&=@retVCodeBi&)
                                    AND (ISNULL(@ContractNumberInt,''='' OR sli.sliContractNumberInt=@ContractNumberInt)
                                    AND (ISNULL(@VCodeBi&,''='' OR sli.sliVCodeBi&=@VCodeBi&
                                    And (ISNULL(@txtConVCodeIntStr,'')='' OR  con.conNameStr like '%'  @txtConVCodeIntStr  '%') 
                                    AND (ISNULL(@fromDate,'')='' OR  retDateStr&&t;=@fromDate)
                                    AND (ISNULL(@toDate,'')='' OR retDateStr<=@toDate)", p);
  

и это моя ошибка

  • Неправильный синтаксис рядом с ключевым словом ‘Return’. ‘ret’ — это не распознанное имя встроенной функции.

Комментарии:

1. В вашем запросе много проблем, если вы действительно используете MySQL. Пожалуйста, отметьте вопрос соответствующим образом. Кроме того, в коде SQL нет Return , так что это может показаться просто ошибкой C # — и, вероятно, требуется больше контекста.

2. @GordonLinoff извините за неправильный тег! но можете ли вы мне помочь?

3. ret(nolock) означает, что вы вызываете функцию rest с параметром «nolock». Вероятно, вам нужен хотя бы пробел, или from sla.Return ret WITH (nolock) . Но это, вероятно, зависит от того, какой SQL-формат вы используете

4. Цепочки соединений вычисляются слева направо. Это означает, что вы не можете поместить столбец con.conVCodeInt в предложение ON до объединения таблицы con.

Ответ №1:

Return — это ключевое слово, поэтому его нужно экранировать.

  FROM SLA.[Return] ret
  

Можно усомниться в том, что это подходящее имя для таблицы, но это не прямая проблема.