Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / OPENJSON проблема с динамическим SQL / 7 сообщений из 7, страница 1 из 1
08.02.2018, 20:06
    #39599377
lex452
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
Есть задача создать хранимую процедуру на нескольких серверах:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROCEDURE dbo.uspParseJson
    @json nvarchar(max)  
AS   

    SET NOCOUNT ON;  
    SELECT *
   FROM OPENJSON(@json, N'$.Orders')
   WITH (
    Number      VARCHAR(200)    '$.Order.Number',
    Date        DATETIME        '$.Order.Date'
)
  



Хотел сделать это через Динамический SQL по очереди выполняя запрос на каждой БД:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
EXEC('CREATE PROCEDURE dbo.uspParseJson
    @json nvarchar(max)  
AS   

    SET NOCOUNT ON;  
    SELECT *
   FROM OPENJSON(@json, N''$.Orders'')
   WITH (
    Number      VARCHAR(200)    ''$.Order.Number'',
    Date        DATETIME        ''$.Order.Date''
)')



Но сервер выдает ошибку
Некорректный синтаксис возле '$.Order.Number'

Кто знает как можно обойти этот Баг (если он таковым является)?
...
Рейтинг: 0 / 0
08.02.2018, 22:45
    #39599425
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
lex452Кто знает как можно обойти этот Баг (если он таковым является)?Ваш Баг нужно обойти его исправлением.

Вы создаёте динамическим запросом хранимую процедуру, а нужно внутри процедуры сделать динамический запрос.
...
Рейтинг: 0 / 0
08.02.2018, 22:48
    #39599426
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
lex452Но сервер выдает ошибку
Некорректный синтаксис возле '$.Order.Number'А, подождите, вам и нужно создать процедуру?
Извините, неправильно прочитал вопрос.
Всё правильно, это должно работать.

Очевидно, версия сервера или уровень совместимости баз неправильные.
...
Рейтинг: 0 / 0
09.02.2018, 07:19
    #39599467
lex452
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
alexeyvg,

С вашей стороны очевидно, но по факту нет, сервер 2017, базы такие же. Если создавать процедуру напрямую, без динамического sql все прекрасно создается. Проблема проявляется толькь когда оборачиваешь скрипт в exec(‘’)
...
Рейтинг: 0 / 0
09.02.2018, 09:49
    #39599499
Барсук-копатель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
lex452alexeyvg,

С вашей стороны очевидно, но по факту нет, сервер 2017, базы такие же. Если создавать процедуру напрямую, без динамического sql все прекрасно создается. Проблема проявляется толькь когда оборачиваешь скрипт в exec(‘’)только что проверил
все создается
проверяйте версии серверов и настройки баз
...
Рейтинг: 0 / 0
09.02.2018, 10:10
    #39599508
ага
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
выполните запрос и поглядите результат
Код: sql
1.
SELECT name, compatibility_level FROM sys.databases


compatibility_level должен быть >=130
...
Рейтинг: 0 / 0
09.02.2018, 12:46
    #39599622
lex452
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OPENJSON проблема с динамическим SQL
alexeyvg,

Все были правы, сервер обновил, а базы не поменял. Спасибо за помощь
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / OPENJSON проблема с динамическим SQL / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]