Особенности промышленных серверов при работе с процедурами SQL

InterBase/Firebird

1) Процедуры действия

CREATE PROCEDURE <имя процедуры> [(<имя параметра><тип данных>[(<размер>)],…)] [RETURNS (<имя параметра><тип данных>[(<размер>)],…)] AS [DECLARE VARIABLE <имя переменной><тип данных>[(<размер>)];]
BEGIN
<SQL-операторы>
END

Пример:

CREATE PROCEDURE CustAmt (CNum Smallint) RETURNS (SumAmt Float) AS
BEGIN
SELECT SUM(Orders.Amt) FROM Customer INNER JOIN Orders ON Orders.CNum=Customer.CNum
AND (Customer.CNum:=CNum) INTO :SumAmt;
END

EXECUTE PROCEDURE CustAmt(2008)

Результат: ничего

SELECT SUM(Orders.Amt) FROM Customer INNER JOIN Orders ON Orders.CNum=Customer.CNum AND (Customer.CNum=2008)

Результат: 1116,85

2) Процедуры выбора данных

CREATE PROCEDURE <имя процедуры> [(<имя параметра><тип данных>[(<размер>)],…)] [RETURNS <имя параметра><тип данных>[(<размер>)],…) AS [DECLARE VARIABLE <имя переменной><тип данных> [(<размер>)];]
BEGIN
<SQL-операторы>
SUSPEND;
END

Пример:

CREATE PROCEDURE AllCustAmt RETURNS (CNum Smallint, SumAmt Float) AS
BEGIN
FOR SELECT Customer.CNum, SUM(Orders.Amt) FROM Customer INNER JOIN Orders ON Orders.CNum=Customer.CNum GROUP BY Customer.CNum INTO :CNum, :SumAmt
DO SUSPEND;
END

EXECUTE PROCEDURE AllCustAmt(2008)
SELECT * FROM AllCustAmt

Результат:
2001 767,1900024441406
2002 1713,22998046875
2003 5160,4501953125
2004 1385,69995117188
2006 14614,8798828125
2007 1900,099975558594
2008 1116,84997558594

SQL Server

1) Создание процедуры в SQL Server

CREATE PROCEDURE <имя процедуры> [@<имя параметра><тип данных>[(<размер>)][=<значение по умолчанию>] [OUT|OUTPUT][READONLY],…] [WITH{ENCRYPTION|RECOMPILE},…]
AS [BEGIN]
<SQL-операторы>
[END]

2) Ключевые слова
• =<значение по умолчанию> — параметру может быть присвоено начальное значение и процедура может вызываться без присвоения ему значения.
• READONLY – в теле процедуры такому параметру нельзя присваивать значение.
• ENCRYPTION – процедура будет доступна только привилегированным пользователям.
• RECOMPILE – план выполнения не кэшируется и процедура компилируется во время выполнения.

3) Выполнение процедуры SQL Server

[EXEC[UTE]]<имя процедуры>[{[@<имя параметра>=]<значение параметра>|@<имя переменной> [OUTPUT]|[DEFAULT]},…][WITH RECOMPILE]
Пример:
USE B1
GO
CREATE PROCEDURE CustAmt @CNum Int=2008, @Sum.Amt Float OUTPUT AS
BEGIN
SELECT Sum(Orders.Amt) FROM Customer INNER JOIN Orders ON Customer.CNum=Orders.CNum AND Customer.CNum=@CNum
END

Exec CustAmt DEFAULT, @SumAmt=0

Результат: 1116,85

Exec CustAmt DEFAULT 2004, @SumAmt=0

Результат: 1385,7

Пример:

USE B1;
GO
CREATE PROCEDURE AllCustAmt @CNum Int OTUPUT, @Sum.Amt Float OUTPUT AS
BEGIN
SELECT Customer.CNum, Sum(Orders.Amt) FROM Customer INNER JOIN Orders ON Customer.CNum=Orders.CNum AND Customer.CNum=@CNum GROUP BY Customer.CNum
END
Exec AllCustAmt @CNum=0, @SumAmt=0

2001 767,19
2002 1713,23
2003 5160,45
2004 1385,7
2006 14614,88
2007 1900,1
2008 1116,85

AllCustAmt @CNum=0, @SumAmt=0

2001 767,19
2002 1713,23
2003 5160,45
2004 1385,7
2006 14614,88
2007 1900,1
2008 1116,85

Declare @SM Float; Exec AllCustAmt 0, @SM

2001 767,19
2002 1713,23
2003 5160,45
2004 1385,7
2006 14614,88
2007 1900,1
2008 1116,85

4) System Stored Procedure
В SQL Server многие задачи администрирования и сбора информации можно выполнять с помощью системных хранимых процедур. Системные хранимые процедуры объединяются в категории, перечисленные в следующей таблице.

Категория Описание
Хранимые процедуры для работы с Active Directory Используются для регистрации экземпляров SQL Server и бах данных SQL Server в службе Microsoft 2000 Active Directory.
Хранимые процедуры для работы с каталогом Используются для реализации функций словаря данных ODBC и изоляции ODBC-приложений от изменений во внутренних системных таблицах.
Хранимые процедуры системы отслеживания измененных данных Используются для включения, отключения или подготовки отчетов об объектах системы отслеживания измененных данных.
Хранимые процедуры для работы с курсорами Используются для реализации различной функциональности курсоров.
Хранимые процедуры для работы с ядром СУБД Используются для выполнения общих задач по обслуживанию компонента SQL Server Database Engine.

Use b1;
Exec sp_tables @table_name=’%’, @table_owner=’dbo’

TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS
B1 dbo Customer TABLE NULL
B1 dbo Department TABLE NULL
B1 dbo Orders TABLE NULL
B1 dbo SalesPeople TABLE NULL
B1 dbo Worker TABLE NULL


Оставить комментарий





Статистика

Рейтинг@Mail.ru