Проблема табличного параметра с операцией - PullRequest
0 голосов
/ 11 июня 2019

Я создаю представление, которое использует табличную функцию.

Вот простая функция:

CREATE FUNCTION TEST(@COD INT)
RETURNS TABLE
AS
RETURN SELECT @COD COD

Когда я выполняю:

SELECT * FROM DBO.TEST(1)

он работает отлично, но когда я выполняю операцию внутри функций, он показывает мне ошибку:

SELECT * FROM DBO.TEST(1+1)

Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с '+'.

также, когда я использую круглые скобки, возникает ошибка:

SELECT * FROM DBO.TEST((1+1))

Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с '('.

У меня есть другая база данных, когда я выполняю все приведенные выше примеры, она работает отлично. Я думаю, что это может быть конфигурация сервера или базы данных, но я не знаю, что я ищу.

1 Ответ

0 голосов
/ 11 июня 2019

Это может быть проблема, которая была исправлена ​​в какой-то момент в выпуске SQL Server.

В качестве альтернативы вы можете использовать APPLY для исправления этой проблемы.

SELECT COD
FROM (SELECT 1+1 AS n)x
CROSS APPLY dbo.TEST(x.n);
...