Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

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). Используется только в пользовательских функциях.

Источник