Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2014
CREATE PROCEDURE [dbo].[JsonTest] @json NVARCHAR(MAX)
SELECT *
FROM OPENJSON(@json)  
WITH (Currency NVARCHAR(3))  

Когда я пытаюсь создать такую сторед процедуру, она не создаётся с ошибкой:
SQL Server 2016
Неправильный синтаксис около ключевого слова "with". Если эта инструкция является обобщенным табличным выражением, предложением xmlnamespaces или предложением в контексте отслеживания изменений, предыдущую инструкцию необходимо завершить точкой с запятой.

Хотя такой запрос выполняется без ошибок:
+
DECLARE @json NVARCHAR(MAX)
SET @json =N'[
{"Currency": "RUB"},
{"Currency": "USD"},
{"Currency": "EUR"}
]'
SELECT *
FROM OPENJSON(@json)  
WITH (Currency NVARCHAR(3))  


Я не понимаю, куда надо поставить эти ";", может кто подсказать, в чём дело ?
16 янв 18, 14:39    [21110844]     Ответить | Цитировать Сообщить модератору
 Re: Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
AS пропустили?

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
	-- Add the parameters for the stored procedure here
	<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
	<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO
16 янв 18, 14:47    [21110885]     Ответить | Цитировать Сообщить модератору
 Re: Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2014
Konst_One,

Нет, просто ошибся в исходниках...
Оказалась ошибка в базе, compatibility level надо 130+
Или выполнять на базе Master...
16 янв 18, 14:57    [21110924]     Ответить | Цитировать Сообщить модератору
 Re: Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
msLex
Member

Откуда:
Сообщений: 7736
Valery_B
Или выполнять на базе Master...

16 янв 18, 15:07    [21110983]     Ответить | Цитировать Сообщить модератору
 Re: Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
msLex,

ну это у него оказалась единственная база с несдвинутым уровнем :)
16 янв 18, 15:17    [21111044]     Ответить | Цитировать Сообщить модератору
 Re: Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2014
TaPaK
msLex,

ну это у него оказалась единственная база с несдвинутым уровнем :)


Она обновилась сама, когда обновляли с 2014 на 2016.
Как раз Мастер - единственная база, которая меняет уровень совместимости)
А у остальных - 130

Но ошибка про точку с запятой явно не адекватна... поставила в тупик.
16 янв 18, 16:04    [21111288]     Ответить | Цитировать Сообщить модератору
 Re: Не удаётся создать Сторед Процедуру с WITH и JSON  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2014
Valery_B
А у остальных - 130

В смысле 100, т.е. SQL 2008
16 янв 18, 16:05    [21111300]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить