Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

end заменяется на }

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык
Предыдущая тема :: Следующая тема  
Автор Сообщение
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Фев 17, 2022 12:12    Заголовок сообщения: end заменяется на } Ответить с цитатой

При выполнении конструкции
Код:
select case '1' when '1' then 'класс 3.3 (вредные условия труда 3 степени)' else '' end

ошибка
Код:
Incorrect syntax near '}'

хотя никакой скобки нет. В MSSMS запрос выполняется без ошибок.
Выполняю через shift-f1 по F8
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1680

СообщениеДобавлено: Чт Фев 17, 2022 13:57    Заголовок сообщения: Ответить с цитатой

А так?

select (case '1' when '1' then 'класс 3.3 (вредные условия труда 3 степени)' else '' end)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1680

СообщениеДобавлено: Чт Фев 17, 2022 14:51    Заголовок сообщения: Ответить с цитатой

Писали люди документацию по Дизайнеру ... старались ....

«Круглые» операторные скобки

В указанных скобках происходит "сквозная" обработка переменных и функций, в отличие от последовательного выполнения кода. Это может приводить к запутанности и тяжелой отладке. Поэтому применение круглых скобок должно быть сведено к минимуму - только там, где это действительно требуется. К устаревшим операторным скобкам относится конструкция круглые скобки и кавычки ("Х-язык") - применять данную конструкцию не рекомендуется. Также не рекомендуется окружать код операторами: «BEGIN Х-язык END». Из-за возможности использования вышеуказанных операторов, конструкцию CASE ... END языка SQL требуется писать только в круглых скобках.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Фев 17, 2022 15:24    Заголовок сообщения: Ответить с цитатой

В этом случае сработало.
Но, вот случай другой:
Код:
select  'Условия труда на рабочем месте Работника: ' + (case '1' when '1'    then 'класс 1 (оптимальные условия труда)'
when '2'            then 'класс 2 (допустимые условия труда)'
when '3.1'        then 'класс 3.1 (вредные условия труда 1 степени)'
when '3.2'        then 'класс 3.2 (вредные условия труда 2 степени)'
when '3.3'        then 'класс 3.3 (вредные условия труда 3 степени)'
when '3.4'        then 'класс 3.4 (вредные условия труда 4 степени'
when '4'            then 'класс 4 (опасные условия труда)'
else null end) as _Work_Cond

Вроде бы и case в скобках, но пока не заключишь в скобки всё выражение, работать не хочет.

Код:
select  ('Условия труда на рабочем месте Работника: ' + (case '1' when '1'    then 'класс 1 (оптимальные условия труда)'
when '2'            then 'класс 2 (допустимые условия труда)'
when '3.1'        then 'класс 3.1 (вредные условия труда 1 степени)'
when '3.2'        then 'класс 3.2 (вредные условия труда 2 степени)'
when '3.3'        then 'класс 3.3 (вредные условия труда 3 степени)'
when '3.4'        then 'класс 3.4 (вредные условия труда 4 степени'
when '4'            then 'класс 4 (опасные условия труда)'
else null end)) as _Work_Cond


По меньшей мере, странно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
vviktor



Зарегистрирован: 09.01.2019
Сообщения: 105
Откуда: Пермь

СообщениеДобавлено: Чт Фев 17, 2022 15:42    Заголовок сообщения: Ответить с цитатой

пропущена скобка для класса 3.4
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1680

СообщениеДобавлено: Чт Фев 17, 2022 15:43    Заголовок сообщения: Ответить с цитатой

Ну да, ну да ... А здесь скобку кто-то украл?

when '3.4' then 'класс 3.4 (вредные условия труда 4 степени'
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Фев 17, 2022 16:18    Заголовок сообщения: Ответить с цитатой

Так это строка, в ней может быть что угодно.
Содержимое строки не должно влиять на работоспособность конструкции.
Я знаю, что закрывающей скобки в значении не было.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1680

СообщениеДобавлено: Чт Фев 17, 2022 16:30    Заголовок сообщения: Ответить с цитатой

Вот так работает. Без круглых скобок на всё выражение. Вопрос-то в чем?

select 'Условия труда на рабочем месте Работника: ' + (case '1' when '1' then 'класс 1 (оптимальные условия труда)'
when '2' then 'класс 2 (допустимые условия труда)'
when '3.1' then 'класс 3.1 (вредные условия труда 1 степени)'
when '3.2' then 'класс 3.2 (вредные условия труда 2 степени)'
when '3.3' then 'класс 3.3 (вредные условия труда 3 степени)'
when '3.4' then 'класс 3.4 (вредные условия труда 4 степени)'
when '4' then 'класс 4 (опасные условия труда)'
else null end) as _Work_Cond
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
tveritin



Зарегистрирован: 26.01.2016
Сообщения: 180
Откуда: Санкт-Петербург

СообщениеДобавлено: Чт Фев 17, 2022 16:35    Заголовок сообщения: Ответить с цитатой

Обходные варианты найдены, но хотелось бы понять почему скобки внутри значения строки ломают работоспособность всей конструкции.
Скобки внутри значения не являются "операторными".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1680

СообщениеДобавлено: Чт Фев 17, 2022 17:43    Заголовок сообщения: Ответить с цитатой

Так работает наша клиентская часть.

Считаются открывающие и закрывающие скобки. Синтаксис SQL-оператора не анализируется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU