SQL Server инструкции CREATE и ALTER
Платформа SQL Server поддерживает инструкции CREATE и ALTER для обоих типов подпрограмм. По умолчанию записанные процедуры SQL Server могут возвращать наборы
Добавить новый язык, не установленный в PostgreSQL по умолчанию, можно с помощью инструкции CREATE LANGUAGE.
Когда вы удаляете существующую функцию, все зависимые от нее объекты становятся нерабочими, и их необходимо перекомпилировать.
Данные и пользовательские функции SQL Server также могут возвращать наборы данных, состоящие из одной или нескольких строк, используя в аргументе RETURNS тип данных TABLE вопреки стандарту ANSI. Однако это делает подпрограммы SQL Server более гибкими и мощными. Для создания пользовательской функции или записанной процедуры используется следующий синтаксис.
CREATE {FUNCTION | PROCEDURE) [имя_владельца. имя_объекта[; int]
([{параметр тип_данных [VARYING] [=значение_по_умолчанию] [OUTPUT]} [, …]])
RETURNS {тип_данных | TABLE]
[WITH {ENCRYPTION | SCHEMABINDING | RECOMPILE |
RECOMPILE, ENCRIPTION}] [FOR REPLICATION] [AS]
блок_кода
Чтобы изменить существующую пользовательскую функцию или записанную процедуру, используйте следующий синтаксис.
ALTER {FUNCTION | PROCEDURE} [имя_владельца.]имя_объекта[;int]
([{параметр тип_данных [VARYING] [=значение_по_умолчанию] [OUTPUT]} [, …]])
RETURNS {тип_данных | TABLE]
[WITH {ENCRYPTION | SCHEMABINDING | RECOMPILE
[RECOMPILE, ENCRIPTION}] [FOR REPLICATION] [AS]
блок_кода
Ниже приводится описание параметров.
CREATE (FUNCTION PROCEDURE} [имя_владельца.]имя_объекта[int]
В текущей базе данных создается новая пользовательская функция или записанная процедура. Для записанных процедур SQL Server вы можете дополнительно указывать номер версии в формате имя_процедуры;1, где 1 — целое число, показывающее номер версии. Эта возможность позволяет иметь несколько версий одной записанной процедуры.
(@параметр тип данных [VARYING] [=значение_по/умолчанию] [OUTPUT]} […]
Определяется один или несколько входных аргументов для пользовательской функции или записанной процедуры. Параметры в SQL Server всегда объявляются с первым символом @.
Где:
VARYING
Используется в записанных процедурах с параметром типа CURSOR. Показывает, что возвращаемый набор данных создается процедурой динамически.
= значение _по_умолчанию
Параметру присваивается значение по умолчанию. Значение по умолчанию используется в случае, если записанная процедура или функция вызывается без указания значения параметра.
OUTPUT
Параметр используется в записанных процедурах. Он эквивалентен предложению OUT инструкции CREATE FUNCTIONS стандарте ANSI. Значение, хранимое в возвращаемом параметре, возвращается в вызвавшую процедуру через возвращаемые переменные команды EXECfUTEJ. Выходные параметры могут относиться к любому типу данных, за исключением типов TEXT и IMAGE.
RETURNS {тип_данных TABLE}
Параметр позволяет пользовательским функциям возвращать одно значение типа тип_данных или возвращать множество значений в типе TABLE. Тип данных TABLE считается встроенным (inline), если не имеет списка столбцов и создается одной инструкцией SELECT. Если предложение RETURNS возвращает множество значений в значении типа TABLE и если значение типа TABLE имеет заданные столбцы и типы данных, то функция называется многокомандной функцией с табличными значениями (multi-statement, multi-valued).
WITH
Позволяет указывать дополнительные характеристики пользовательской функции или записанной процедуры SQL Server.
ENCRYPTION
Указывается, что платформа SQL Server должна шифровать столбцы системной таблицы, в которых хранится текст функции для предотвращения несанкционированного просмотра кода функции. Используется как в пользовательских функциях, так и в записанных процедурах.
SCHEMABUILDING
Указывается, что функция связана с конкретным объектом базы данных, например таблицей или представлением. Такой объект базы нельзя изменить или удалить, пока существует функция (или пока указан параметр SCHEMABUILDING). Используется только в пользовательских функциях.