Добавление в таблицу новой колонки. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Добавление в таблицу новой колонки.



Для определения новой колонки необходимо использовать ключевое слово ADD. За ним следует описание колонки, которое имеет такой же формат, как и при создании колонки с помощью команды CREATE TABLE. Здесь же можно наложить на таблицу но­вые ограничения на значения колонок. Определив ключевое слово WITH CHECK, вы предписываете системе при добавлении новых ограничений на значения колонок FOREIGN KEY или CHECK осуществлять проверку данных в таблице на соответствие этим ограничениям. По умолчанию данная про­верка проводится для всех вновь создаваемых ограничений. Когда выпол­нение подобной проверки не требуется, необходимо использовать ключе­вое слово WITH NOCHECK.

Удаление колонок из таблицы.

В случае необходимости можно удалить из таблицы некоторые колонки. Для этого используйте ключевое слово DROP. Вы можете удалить как конкретную колонку (ключевое слово COLUMN), так и определенное ограничение на значение колонки. Однако необходимо помнить, что нельзя удалять следующие колонки:

□ колонки, задействованные в индексе;

□ колонки, полученные в результате репликации;

□ колонки, для которых определены любые ограничения на значения;

□ колонки, для которых определены значения по умолчанию;

□ колонки, связанные с правилом.

Управление ограничениями на значения колонок.

Иногда бывает необхо­димо отключить ограничения на значения колонок FOREIGN KEY или CHECK. Отключение конкретного ограничения (NOCHECK CONSTRAINT) означает, что при вводе новых строк данные не будут проверяться на соответствие это­му ограничению. Когда снова потребуется сделать ограничение активным, используйте ключевое слово CHECK CONSTRAINT. При необходимости вы мо­жете управлять всеми ограничениями сразу. Для этого необходимо использовать ключевое слово ALL.

Управление триггерами.

При помощи данной команды можно управлять состоянием триггеров, определенных для данной таблицы. Ключевое слово DISABLE TRIGER, отключает триггер. При этом в процессе изменения данных в таблице те действия, которые определены в триггере как реакция системы на эти изменения, не производятся, хотя триггер продолжает существовать. Чтобы активизировать триггер, необходимо использовать команду с ключевым словом ENABLE TRIGGER. Если требуется управлять сразу всеми триггерами, используйте ключевое слово ALL.

Удаление таблиц.

Для удаления таблиц средствами Transact SQL используется команда DROP TABLE. Перед удалением необходимо убедиться, что удаляемая таблица не имеет взаимосвязи с другими таблицами.

Удаление записей из таблиц

Как бы ни были ценны данные, хранящиеся в ваших таблицах, и сколько бы вре­мени вы ни потратили на их внесение в базу данных, приходит время, когда эти данные устаревают и становятся ненужными. Тогда приходится их удалять, что­бы освободить пространство в таблицах для новых данных. Какова бы ни была причина удаления данных, это наверняка придется делать любому пользовате­лю. Поэтому необходимо иметь представление, как это делается, иначе вместе с действительно ненужными данными могут быть незаметно удалены и актуаль­ные строки.

Удаление данных из таблицы выполняется построчно. За одну операцию можно выполнить удаление как одной строки, так и нескольких тысяч строк. Если необходимо удалить из таблицы все данные, то можно удалить саму табли­цу. Естественно, при этом будут удалены и все данные, хранящиеся в ней. Этот способ следует использовать в самых крайних случаях. Чаще всего для удаления данных используется команда DELETE, удаляющая строки таблицы. Синтаксис команды DELETE следующий:

DELETE

[FROM ]

{ table_name WITH (<table_hintlimited> [,..n])

| view name

| rowset_function_limited }

[ FROM {<table_source>} [,...n] ]

[WHERE

{ <search_condition>

| { [ CURRENT OF

{ { [ GLOBAL ] cursorname }

| cursor_variable_name }] }]

[OPTION (<query_hint> [,...n])]

При работе с командой DELETE необходимо определить диапазон строк, кото­рый будет уничтожен. Для определения этого диапазона используются обычные запросы, описанные ранее в этой главе. Разделы, используемые в команде DELETE, были описаны в разделе «Выборка данных».

Предварительно можно просмотреть список удаляемых строк, если заменить ключевое слово DELETE на SELECT.

Управление данными

Добавление данных

Данные в таблицу SQL- сервер могут быть внесены следующими способами:

1) Спомощью команды INSERT. Используя эту команду, можно добавить как одну строку, так и множество строк.

2) С помощью программного интерфейса баз данных Database API. Этот способ включает использование ADO, OLE DB, ODBC и DB-Library.

3) С использованием команды SELECT INTO, когда результат выполнения запроса копируется в таблицу.

4) С использованием возможностей Data Transformation Services. Используя эту технологию, можно выполнять сложные операции переноса и трансформации данных с использованием множества распределенных гетерогенных источников информации,

Использование INSERT

Команда INSERT позволяет вставить в таблицу одну или несколько строк. Приведем синтаксис команды INSERT:

INSERT [INTO]

{ table_name [WITH (<table_hint_limited> [...n])]

| view_name

| rowset_function_limited }

{ [(column_list[,...n])]

{ VALUES ({ DEFAULT | NULL | expression }[....n])

| derived_table | execute_statement } } | DEFAULT VALUES

Рассмотрим назначение каждого из аргументов команды.

INTO - дополнительное ключевое слово. Оно может быть использовано в команде между словом INSERT и именем таблицы для обозначения того, что следующий параметр является именем таблицы, в которую будут вставлены данные.

Table_name - имя таблицы, в которую необходимо вставить данные.

WITH <table_hint_limited> - специальная конструкция, с помощью которой можно на время вставки строк в таблице установить определенный уровень блокирования.

view_name - имя представления, в которое необходимо вставить данные. Изменение данных через представление должно быть разрешено. SQL Server 7.0 не может изменять с помощью одной команды данные в более чем одной исходной таблице представления.

rowset_function_limited - этот аргумент содержит команды OPENQUERY и OPENROWSET, которые определяют набор данных для вставки.

column_list - этот аргумент содержит список колонок строки, в которые будет производиться вставка данных. Если этот аргумент опущен, то сервер будет вставлять данные последовательно во все колонки, начиная с первой. Значения для колонок указываются аргументом VALUES.

VALUES - ключевое слово, которое определяет набор данных, которые будут вставлены в таблицу. Количество аргументов VALUES определяется количеством колонок в таблице или количе­ством колонок в списке column_list (если таковой имеется). Для каждой колонки таблицы можно указать один из трех возможных вариантов:

□ DEFAULT. Будет вставлено значение по умолчанию, определенное для колонки.

□ NULL. При указании этого параметра в колонку, для которой разрешено хранение значений NULL, будет вставлено значение NULL.

□ EXPRESSION. В явном виде задает значение, которое будет вставлено в колонку таблицы.

derived_table - этот аргумент может содержать команду SELECT, с помощью которой будет производиться выборка данных, которые необходимо вста­вить в таблицу.

execute_statement. - набор данных, помимо использования команды SELECT, может быть получен с помощью команды EXECUTE как результат выполнения хранимой процедуры или другой конструкции.

DEFAULT VALUES - при указании этого параметра строка будет содержать только значения по умолчанию. Если для колонки не установлено значение по умолчанию, но разрешено хранение значений NULL, то в колонку будет вставлено NULL. Если же для колонки не разрешено хранение NULL, нет значения по умолчанию и в команде INSERT не указано значение для вставки, то сервер выдаст сообщение об ошибке и прервет выполнение команды. Это произойдет также в случае неправильного указания типа данных.

В простейшем случае вставка данных с помощью команды INSERT предлагает использование конструкции INSERT...VALUES:

INSERT [INTO] table_or_view

[(column_list[..)]

VALUES (data_values [...n])

Аргумент table_or_view указывает имя таблицы или представления, в которые необходимо вставить строку данных.

Если необходимо быстро создать таблицу, имеющую такую структуру, чтобы в ней можно было сохранить результат выполнения запроса, то лучшим выходом будет использование команды SELECT...INTO. При выполнении запроса SELECT...INTO сервер автоматически создаст новую таблицу с нужной структурой и вставит в нее полученный набор строк. Синтаксис команды SELECT...INTO следующий:

SELECT {column_name [[AS] column_alias [...n]}

INTO new_table FROM {source_table [..n]

<select_options>]

Рассмотрим назначение каждого из аргументов:

Аргумент column_name указывает имя колонки таблицы, которая будет включена в результат. Указанная колонка должна принадлежать одной из таблиц, перечисленных в списке FROM {source_table[..n]}. Если колонки, принадлежащие разным таблицам, имеют одинаковые имена, то для колонки необходимо использовать псевдоним.В противном случае сервер попытается создать таблицу с колонками, имеющими одинаковые имена. В результате произойдет ошибка, и выполнение запроса будет прервано

new_table - содержит имя таблицы, которая будет создана.

Конструкция FROM {source_table} содержит список исходных таблиц. В более сложных запросах с помощью этой конструкции определяются условия связывания двух и более таблиц.

select_options - содержит список различных параметров команды select.

Извлечение данных

После того, как таблица создана и в нее внесены данные, можно приступать к их использованию. В большинстве случаев используется упрощенный вариант команды SELECT, имеющий следующий синтаксис:

SELECT select_list

[INTO new_table]

FROM table_source

[WHERE search_conditions]

[GROUP BY group_by_expression]

[HAVING search_condition]

[ORDER BY order_expression [ASC | DESC] ]

Раздел SELECT имеет следующий синтаксис:

SELECT [ ALL | DISTINCT ]

TOP n [PERCENT]

<select_list>

Рассмотрим более подробно назначение аргументов:

ALL - при указании этого ключевого слова в результат запроса разрешается включение дублирующихся строк. Параметр ALL используется по умолча­нию.

DISTINCT - это ключевое слово запрещает появление в результате дублирующихся строк.

TOP n PERCENT -использование этой конструкции предписывает серверу выбирать не все строки, а только n первых. Можно также выбирать не фиксированное количество строк, а определенный процент от всех строк, удовлетворяющих условию.

Конструкция < select_list > определяет список и происхождение колонок, которые будут включены в результат.

Аргумент table_name должен содержать имя таблицы, из которой необходимо выбрать все колонки. Имя таблицы необходимо указы­вать, если в запрос включено несколько таблиц. Если же в запросе участвует только одна таблица, то проще применить символ * без указания имени таблицы.

Аргумент view_name указывает имя представления, из которого необходимо выбрать все колонки.

Аргумент table_alias указывает псевдоним таблицы, из которой необходимо выбрать все колонки.

Аргумент column_name указывает имя колонки, которое необходимо включить в результат. Колонка должна принадлежать одной из таблиц, указанных в конструкции FROM.

Синтаксис команды SELECT позволяет изменять имена колонок, которые они будут иметь в результате. Для этого используются псевдонимы. Псевдоним задается с помощью аргумента column_alias, он должен быть уникален в пределах результата. Использование псевдонимов обязательно, если исходные таблицы имеют колонки с одинаковыми именами и эти колонки необходимо включить в результат.

Раздел INTO предназначен для сохранения результата, выполнения запроса в заданной таблице.

Аргумент new_table определяет имя таблицы, в которой будет размещен результат. Сервер автоматически создает таблицу с указанной структурой.

Синтаксис table_source:

Рассмотрим использование каждого из параметров:

table_name [ [AS] table_alias ].Имя связанной таблицы. При необходимости для этой таблицы можно указать псевдоним. Использование псевдонимов необходимо, если в конструкции FROM указано имя изменяемой таблицы. Это требуется, чтобы сервер различал, когда имя таблицы нужно рассматривать как имя изменяемой таблицы, а когда — как имя связанной таблицы.

view_name [ [AS] table_alias]. Имя представления, определяющего критерии выполнения команды UPDATE. При необходимости для представления можно указать псевдоним, который будет использоваться в дальнейшем для ссылки на это представление.

rowset_function [ [AS] table_alias]. Этот блок предполагает использование функций ROWSET (CONTAINSTABLE, FREETEXTTABLE, OPENQUERY и OPENROWSET). С помощью этих функций можно подготовить набор данных, который может быть использован вместо таблицы или представления. Дополнительно можно указать псевдоним, позволяющий обращаться к данным.

derived_table [AS] table_alias [(column_alias [..n]). Определяет имя таблицы, которая может быть использована для построения подзапросов при выполнении обновления. Дополнительно можно указать псевдоним, как для всей таблицы, так и для каждой конкретной колонки. При указании псевдонима для колонок необходимо указывать их в соответствии с физическим порядком колонок в исходной таблице. Кроме того, требуется указание псевдонима для каждой колонки, созданной в исходной таблице.

joined_table. Эта конструкция является наиболее сложным методом задания критериев обновления таблицы и используется для связывания при выполнении обновления нескольких таблиц. Структура конструкции <joined_table> следующая:

<table_source>

<join_type>

<table_source> ON

<search_condition>

<table_source>

CROSS JOIN

<table_source>

В этом случае конструкция <table_source> описывает исходную таблицу, с которой будут связываться другие таблицы.

Конструкция <join_type> описывает тип связывания двух таблиц. Исходная таблица указывается слева от конструкции <join_type> (она называется левой таблицей — left table), а справа указывается зависимая таблица (она называется правой таблицей — right table). Структура конструкции <join_type> следующая:

[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ]

[ <join_hint> ]

Рассмотрим назначение каждого из аргументов.

INNER. Этот тип связи используется по умолчанию. Выбираются пары строк, для которых имеются строки, удовлетворяющие критерию связыва­ния в обеих таблицах. Строки из левой таблицы, для которых не имеется пары в связанной таблице, в результат не включаются. Также не включа­ются строки правой таблицы, для которых нет соответствующей строки в левой таблице.

LEFT [OUTER]. В результат будут включены все строки левой таблицы, неза­висимо от того, есть для них соответствующая строка в правой таблице или нет. Для соответствующих колонок правой таблицы, включенных в запрос, устанавливается значение NULL.

RIGHT [OUTER]. При использовании этого ключевого слова в результат будут включены все строки правой таблицы, независимо от того, есть ли для них соответствующая строка в левой таблице. Для соответствующих колонок левой таблицы, включенных в запрос, устанавливается значение NULL.

FULL [OUTER]. В результат будут включены все строки как правой, так и левой таблицы. Применение ключевого слова FULL [OUTER] можно рассматривать как одновременное применение ключевых слов LEFT [OUTER] и RIGHT[OUTER].

JOIN <tab1e_source>. После этого ключевого слова должна указываться правая таблица.

ON <search_condition>. Логическое условие, определяющее условие связы­вания двух таблиц. Можно использовать операции сравнения (например, =, <, >, <=, >=,!=, <>).

С помощью конструкции WHERE можно сузить количество обрабатываемых строк данных, определив одно или несколько логических условий. В результат будут включены только те строки, которые соответствуют наложенным условиям. Условие может включать константы, переменные и любые выражения, возвра­щающие булево значение (TRUE или FALSE). Можно указать несколько условий, объединив их с помощью логических операндов OR, AND и NOT. Синтаксис раздела WHERE следующий:

WHERE <search_condition> | column_name { *= | =* } column_name

В конструкции <search_condition> можно определить любое логическое усло­вие, при выполнении которого строка будет включена в результат. Логическое условие может быть произвольным, в том числе и не связанным с данными.

Раздел GROUP BY позволяет выполнять группировку строк таблиц по определенным критериям. Для каждой группы можно выполнить специальные функции агрегирования, которые будут применены ко всем строкам в группе. Синтаксис раздела GROUP BY следующий:

[ GROUP BY [ALL] group_by_expression [,...n] [ WITH { CUBE | ROLLUP } ]]

ALL. Если в запросе было определено условие, сужающее диапазон группировки выбираемых строк, то при указании в разделе GROUP BY ключевого слова ALL сервер будет выводить список всех групп, но не будет выполнять для них функции агрегирования.

Раздел HAVING имеет следующую структуру:HAVING <search_condition>.

Этот раздел в основном используется для указания условий поиска при выполнении группирования данных с помощью раздела GROUP BY. Конструкция <search_condition> содержит логические условия, определяющие диапазон строк, обрабатываемых запросом. Правила работы с этой конструкцией были рассмотрены при описании раздела WHERE.

Раздел ORDER BY используется, когда необходимо отсортировать данные в результирующем наборе. Синтаксис этого раздела следующий:

ORDER BY {order_by_expression [ ASC | OESC ] } [,...n]

Аргумент order_by_expression должен содержать имя одной из колонок, включенных в запрос. Можно использовать для сортировки колонку, не включенную в результат. При указании ключевого слова ASC данные будут отсортированы по возрастанию. Если необходимо отсортировать данные по убыванию, нужно использовать ключевое слово DESC. По умолчанию используется сортировка по возрастанию.

Данные можно отсортировать по нескольким колонкам. Для этого необходимо ввести имена колонок через запятую с указанием порядка сортировки.

Изменение данных

Для изменения данных можно использовать различные методы, включая удаление и повторную вставку строк. Чаще всего изменение данных производится с помо­щью команды UPDATE, позволяющей выполнять как простое обновление данных в колонке, так и сложные операции модификации данных во множестве строк таблицы. Если при обновлении строк необходимо реализовать сложный алгоритм, то можно создать хранимые процедуры, которые будут содержать всю логику обновления. Пользователю не придется всякий раз, когда необходимо выполнить обновление, восстанавливать заново сложные фрагменты кода. Приведем синтаксис команды UPDATE:

UPDATE

{

table_name

[WITH (<table_int_limited> [...n])]

| view_name rowset_function_limited}

SET

{column_name = {expression | DEFAULT | NULL}

| @variable = expression

| @variable = column = expression } [..n]

{{[FROM {<table_source>} [..n] ]

[WHERE

<search_condition>] }

С ключевого слова SET начинается блок, к которому определяется список переменных. Команда UPDATE позволяет изменять не только колонки таблицы.

За один вызов UPDATE можно изменить несколько колонок во множестве строк одной таблицы. Для каждой колонки нужно определить значение, которое она примет после выполнения изменения. С помощью ключевого слова DEFAULT можно присвоить колонке значение, определенное для нее по умолчанию. Можно также установить для колон­ки значение NULL. Если необходимо установить определенное значение, следует указать константу, переменную или выражение. Изменению подвергнутся все строки, удовлетворяющие критериям ограничения области действия команды UPDATE, которые задаются с помощью ключевого слова WHERE. При составлении выражения можно ссылаться на любые колонки таблицы, включая изменяемые.

Хранимые процедуры

Хранимые процедуры имеют очень много общего с обычными процедурами, широко используемыми в различных языках программирования. В частности, это касается процесса создания хранимых процедур. Прежде всего, пользователю необходимо определить хранимую процедуру. Определение хранимой процедуры заключается в исполнении следующей команды:

CREATE PROCEDURE] procedure_name [;number]

[ {^parameter data_type} [VARYING] [= default] [OUTPUT] ] [,...n]

[WITH

{ RECOMPILE

| ENCRYPTION

| RECOMPILE. ENCRYPTION } ]

[FOR REPLICATION]

AS

sql_statement [...n]

Рассмотрим синтаксис данной команды более подробно. Параметры и ключевые слова, используемые при определении процедуры, имеют следующее назначение:

procedure_name — имя создаваемой процедуры. Используя префиксы sp_, # и ##, можно определить создаваемую процедуру как системную или временную. При этом, однако, необходимо позаботиться и о размещении процедуры в соответствующей системной базе данных, поскольку команда CREATE PROCEDURE создает хранимую процедуру в текущей базе данных. Поэтому перед созданием процедуры необходимо выполнить команду USE, чтобы сделать требуемую базу данных текущей;

number — параметр определяет идентификационный номер хранимой процедуры, однозначно определяющий ее в группе процедур;

(^parameter — определяет имя параметра, который будет использоваться создаваемой хранимой процедурой для передачи входных или выходных данных. Параметры, определяемые при создании хранимой процедуры, являются локальными переменными, поэтому несколько хранимых процедур могут иметь абсолютно идентичные параметры;

к data_type — определяет, к какому типу данных должны относиться значения параметра описываемой процедуры. Для определения параметров можно использовать любые типы данных;

OUTPUT — использование этого ключевого слова определяет указанный па­раметр как выходной;

VARYING — ключевое слово, которое используется совместно с параметром, относящимся к типу данных cursor. Определяет, что в качестве выходного параметра будет представлено результирующее множество;

default — позволяет определить для параметра значение по умолчанию, которое хранимая процедура будет использовать в случае, если при ее вызове указанный параметр был опущен.

RECOMPILE — ключевое слово, предписывающее системе создавать план выполнения процедуры при каждом ее вызове;

FOR REPLICATION — процедура, определенная с использованием данного ключевого слова, предназначена исключительно для осуществления процесса репликации. Вы не можете сочетать это ключевое слово с ключевым словом WITH RECOMPILE;

ENCRYPTON — если при определении процедуры было использовано данное ключевое слово, то текст процедуры непосредственно перед записью в системную таблицу syscomments будет зашифрован. Вы можете прибегнуть к шифрованию, если необходимо скрыть от пользователя особенности реализации хранимой процедуры;

AS — ключевое слово, определяющее начало кода хранимой процедуры. После этого ключевого слова следуют команды Transact-SQL, которые и составляют непосредственно тело процедуры (sql statement). Здесь можно использовать любые команды, включая вызов других хранимых процедур, за исключением команд, начинающихся с ключевого слова CREATE.

В момент создания хранимой процедуры система осуществляет только проверку синтаксиса команд. Поэтому вы можете создавать хранимые процедуры в любом порядке, не особенно заботясь о том, что некоторые упоминаемые в них объекты (в том числе и другие хранимые процедуры) пока еще не существуют. Проверка правильности ссылок производится только в процессе компиляции хранимой процедуры, которая выполняется непосредственно перед ее выполнением.

Создание хранимых процедур

Созданию хранимой процедуры предшествует этап предварительной работы, в ходе которой необходимо найти ответы на следующие вопросы:

1. Определение типа создаваемой хранимой процедуры.

Помимо тех хра­нимых процедур, что создает пользователь в контексте собственной базы данных, существует также возможность создавать системные и временные процедуры. С точки зрения написания кода, эти хранимые процедуры мало отличаются друг от друга. Различие заключается в организации спо­соба хранения процедуры. Чтобы создать системную процедуру, необходи­мо дать ей название, начинающееся с префикса sp_, и сохранить ее в сис­темной базе данных master. Временные хранимые процедуры доступны пользователям в течение того времени, пока активно соединение, в кон­тексте которого эта процедура была создана. SQL Server позволяет созда­вать как локальные, так и глобальные временные процедуры, которые хра­нятся в базе данных tempdb. Локальные временные хранимые процедуры доступны только пользователю, работающему в контексте соединения, по­родившего данную процедуру. При определении хранимой процедуры та­кого типа необходимо дать ей имя, начинающееся с символа #. Глобальные временные хранимые процедуры доступны пользователям из любых сое­динений данного сервера. Имя глобальной временной процедуры начина­ется с символов ##.

2. Определение входных и выходных параметров хранимой процедуры.

Подобно процедурам, входящим в состав большинства языков программи­рования, хранимые процедуры могут иметь входные и выходные парамет­ры. SQL Server позволяет определить для одной хранимой процедуры до 1024 параметров. Полученные процедурой параметры могут использовать­ся как обыкновенные переменные Transact-SQL, участвуя в любых опера­циях наравне с другими переменными. По окончании выполнения кода хранимой процедуры вы можете передать некоторые полученные данные, используя выходные параметры. Может сложиться такая ситуация, что выполнение хранимой процедуры будет невозможно в силу каких-либо причин. Поэтому при определении хранимой процедуры необходимо про­думать, каким образом процедура будет информировать вызвавшее ее при­ложение об успешности выполнения своего кода.

3. Разработка кода хранимой процедуры.

Код процедуры может содержать последовательность любых команд Transact-SQL, включая вызов других хранимых процедур. Необходимо, однако, чтобы код реализовывал логи­чески законченное действие. Требуется очень серьезно подойти к написа­нию кода процедуры, поскольку плохо написанная хранимая процедура может существенным образом снизить эффективность системы, особенно если ею пользуется множество пользователей. Лучше всего предваритель­но протестировать код процедуры в Query Analyzer с использованием та­кого средства мониторинга, как SQL Server Profiler. Вместе эти утилиты предоставляют уникальные возможности для отладки запросов.

Включение создаваемой процедуры в группу.

Для удобства управления процедурами вы можете группировать логически однотипные хранимые процедуры. Для этого всем процедурам группы при создании дают одина­ковые имена. Однако при этом им присваивают различные идентификаци­онные номера. Таким образом, получается несколько хранимых процедур, которые обозначаются следующим образом:

<имя _процедуры>;<идентификаци-онный_номер>. Ссылка на группу осуществляется по имени процедур. На­пример, в группе процедур #proced отдельные хранимые процедуры могут иметь имена #proced;l, #proced;2 и т. д. Достоинство такого подхода за­ключается в том, что вы можете одновременно управлять сразу всей груп­пой процедур. При этом, например, можно удалить сразу все процедуры, входящие в состав группы.

Когда все эти вопросы решены, можно приступать непосредственно к созда­нию хранимой процедуры. Как и большинство объектов SQL Server, хранимую процедуру можно создать тремя способами:

1) Используя утилиту Enterprise Manager;

2) Прибегнув к помощи мастера Create Stored Procedure Wizard;

3)Воспользовавшись средствами, предоставляемыми Transact-SQL.



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 260; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.183.172 (0.087 с.)