Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Пн Окт 10, 2022 17:47 Заголовок сообщения: Проблема с непарными кавычками |
|
|
Заметили в последнее время ошибки при работе процедур, работавших годами.
В частности, zrp_PRC_enumeration стала выдавать ошибку только при повторном выполнении. Т.е., в первый раз корректно. Во второй раз - ошибка "Incorrect syntax near CFilter_".
Причем, значение алиаса CFilter_ одинаково, что при первом выполнении, что при втором.
Закомментили `FREE #zrp_rep` и всё заработало как часы.
Недавно тоже столкнулись с подобной проблемой, но уже не вспомню где именно проявлялось.
Последний раз редактировалось: tveritin (Чт Июл 20, 2023 23:17), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Вт Окт 11, 2022 16:17 Заголовок сообщения: |
|
|
Не помогло исключение 'FREE ...' из текста процедуры.
Хотя, частично помогло, теперь при первом запуске (после запуска БК) дает ошибку.
А при втором и последующих запусках - норм.
CFilter_ уже указывал в виде CFilter_[']
И присвоение алиаса делал в виде
ALIAS cFilter_ := { AND EXISTS(SELECT TOP 1 1 FROM sl_uni_tax SS WHERE SS.cmonth BETWEEN _yp_*12+1 AND _yp_*12+mp_ AND SS.id_firm = @@id_firm AND SS.t = type) };
Куда дальше копать - не понимаю.
Последний раз редактировалось: tveritin (Вт Окт 11, 2022 16:51), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
RVV Большой шоколадный орден

Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Вт Окт 11, 2022 16:34 Заголовок сообщения: |
|
|
Переменную нужно объявлять как LOCAL |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Вт Окт 11, 2022 16:36 Заголовок сообщения: |
|
|
cFilter_ уже и так объявлена как LOCAL, это в базовой процедуре. |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Ср Окт 12, 2022 10:20 Заголовок сообщения: |
|
|
Пришлось избавиться от CFilter_ вообще, скопировав запрос INSERT...SELECT.
Т.е, для IF yp_ > 2010 сделал свой запрос, а для ELSE - свой.
2 дня потрачено на костылестроение, т.к. логически понять причину ошибки я не смог. |
|
Вернуться к началу |
|
 |
RVV Большой шоколадный орден

Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Ср Окт 12, 2022 12:07 Заголовок сообщения: Re: Некорректно отрабатывает FREE |
|
|
tveritin писал(а): | Заметили в последнее время ошибки при работе процедур, работавших годами.
В частности, zrp_PRC_enumeration стала выдавать ошибку только при повторном выполнении. Т.е., в первый раз корректно. Во второй раз - ошибка "Incorrect syntax near CFilter_".
Причем, значение алиаса CFilter_ одинаково, что при первом выполнении, что при втором.
Закомментили `FREE #zrp_rep` и всё заработало как часы.
Недавно тоже столкнулись с подобной проблемой, но уже не вспомню где именно проявлялось. |
В процедуре zrp_prc_enumeration
есть команда FREE sl_uni_tax;
и нет `FREE #zrp_rep` |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Ср Окт 12, 2022 12:56 Заголовок сообщения: |
|
|
У нас базовый объект совпадает полностью с серийным. Проверили только что.
И строки `FREE sl_uni_tax` точно нет. И `FREE #zrp_rep` точно есть. |
|
Вернуться к началу |
|
 |
RVV Большой шоколадный орден

Зарегистрирован: 14.01.2010 Сообщения: 449
|
Добавлено: Чт Окт 13, 2022 12:39 Заголовок сообщения: |
|
|
Виноват. Это у меня ... другой объект  |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Чт Окт 13, 2022 12:51 Заголовок сообщения: |
|
|
Выяснили, что если есть в наименовании предприятия непарные кавычки (не апострофы), то ошибка вываливается. Странно, что через раз вываливается, иногда интерпретатор всё проглатывает без разговоров.
Добавляем еще одну кавычку в наименование и всё ОК.
Но, конечно же, это не решение проблемы.
Уже как минимум с десяток лет наименование предприятия не менялось, а проявляться это стало только в последние дни. |
|
Вернуться к началу |
|
 |
tveritin
Зарегистрирован: 26.01.2016 Сообщения: 191 Откуда: Санкт-Петербург
|
Добавлено: Чт Июл 20, 2023 23:30 Заголовок сообщения: |
|
|
Год прошел и я забыл как решается данная проблема. Потратил полдня, чтоб вспомнить.
Либо написать серверную функцию и подставлять ее
Код: | dbo.user_quotes_set('АО "bla bla "bla" ') |
, либо
Код: | replace ('АО "bla bla "bla" ', char(34), char(148)) |
Третий вариант для тех, кто убежден в обязательной парности яи... (сорри) кавычек, добавлять кавычку обязательно не в явном виде.
И тут необходим предварительный подсчет этих самых кавычек
Код: | 'АО "bla bla "bla" ' + iif((select (count(*)+1) % 2 from string_split('АО "bla bla "bla" ', char(34))) <> 0, char(34), '') |
Для меня самый приемлемый вариант - второй.
Пусть будет здесь как база знаний, может и уважаемые наши разработчики Босс-Кадровика обратят внимание на этот нюанс. |
|
Вернуться к началу |
|
 |
|