Пользовательская функция SQL Server с фиксированным параметром - PullRequest
1 голос
/ 10 апреля 2019

Возможно ли в SQL Server определить пользовательскую функцию с фиксированными перечисляемыми параметрами?

Подобно многим предопределенным функциям в SQL Server, таким как DATEDIFF, который принимает DAY, MONTH и т. Д. В качестве первого параметра, но это не char или любые другие типы данных ... Я думаю, что найти ответ в Интернете должно быть легко, но я не знаю, что именно я должен искать. ??

1 Ответ

1 голос
/ 10 апреля 2019

SQL Server не имеет констант или перечислений в этом смысле;параметры для функций или процедур требуют передачи строк, чисел или переменных.

Да, в отличие от возможности использовать четко определенные константы непосредственно во встроенных функциях и других структурах T-SQL.Может быть, это то, что мы увидим в будущем развитии языка, но это то, что мы имеем сегодня.

Для таких вещей, как DATEADD, вы передаете идентификатор ... noteчто эти работы:

SELECT DATEADD([DAY], 1, GETDATE());
SELECT DATEADD("DAY", 1, GETDATE());

Но это не удастся:

SELECT DATEADD('DAY', 1, GETDATE());

Интересно, что это также не удастся (просто еще одно доказательство того, что это обрабатывается как идентификатор):

SET QUOTED_IDENTIFIER OFF;
SELECT DATEADD("DAY", 1, GETDATE());

Вы не можете написать свои собственные функции или процедуры, которые принимают идентификаторы в качестве входных данных - они всегда либо интерпретируются как неявно преобразованная строка (как в EXEC sp_who active;), либо они просто не проходят проверку синтаксического анализа (как в приведенном выше примере).).Входные параметры для встроенных и пользовательских функций будут принимать выражения, а процедуры - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...