Сақталатын процедуралар, оларды құру, орындау және жою Құрастарған: ХАА академигі, қауымдастырылған профессор, т.ғ.к. Сауанова К.Т
Электронный адрес k.sauanova@aues.kz
Сақталатын процедуралар (Stored Procedure)- олар байланысқан SQL-операторларының топтары. Сақталатын процедураларды пайдалану мәліметтер қорымен жұмыстың қосымша икемділігін қамтамасыз етеді, өйткені сақталатын процедураларды орындау SQL жеке операторлар тізбегінен әлдеқайда қарапайымдау
Сақталатын процедуралар (Stored Procedure)- олар байланысқан SQL-операторларының топтары. Сақталатын процедураларды пайдалану мәліметтер қорымен жұмыстың қосымша икемділігін қамтамасыз етеді, өйткені сақталатын процедураларды орындау SQL жеке операторлар тізбегінен әлдеқайда қарапайымдау
USE productsdb;
GO
CREATE PROCEDURE ProductSummary AS
SELECT ProductName AS Product, Manufacturer, Price
FROM Products
USE productsdb;
GO
CREATE PROCEDURE ProductSummary AS
BEGIN
SELECT ProductName AS Product, Manufacturer, Price
FROM Products
END;
Процедураны орындау
EXEC немесе EXECUTE командасын пайдаланамыз:
Процедураны жою
DROP PROCEDURE
Параметрі бар процедуралар
USE productsdb;
CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY,
ProductName NVARCHAR(30) NOT NULL,
Manufacturer NVARCHAR(20) NOT NULL,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
);
Деректерді қосу процедура
USE productsdb;
GO
CREATE PROCEDURE AddProduct
@name NVARCHAR(20),
@manufacturer NVARCHAR(20),
@count INT,
@price MONEY
AS
INSERT INTO Products(ProductName, Manufacturer, ProductCount, Price)
VALUES(@name, @manufacturer, @count, @price)
Процедураны пайдалану
USE productsdb;
DECLARE @prodName NVARCHAR(20), @company NVARCHAR(20);
DECLARE @prodCount INT, @price MONEY
SET @prodName = 'Galaxy C7'
SET @company = 'Samsung'
SET @price = 22000
SET @prodCount = 5
EXEC AddProduct @prodName, @company, @prodCount, @price
SELECT * FROM Products
EXEC AddProduct 'Galaxy C7', 'Samsung', 5, 22000
ТРИГГЕР
CREATE TRIGGER триггер_аты
ON {кесте_аты | көрініс_аты}
{AFTER | INSTEAD OF} [INSERT | UPDATE | DELETE]
AS sql_өрнегі
AFTER: тек кестелер үшін анықталады. Әрекет орындалған соң іске қосылады.
INSTEAD OF: әрекеттін орнына орындалады - қосу, өзгерту немесе жою - орындалмайды). Кестелен, көріністер үшін құрылады.
INSERT,UPDATE,DELETE триггерлері
CREATE DATABASE productdb;
GO
USE productdb;
CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY,
ProductName NVARCHAR(30) NOT NULL,
Manufacturer NVARCHAR(20) NOT NULL,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
);
USE productdb;
GO
CREATE TRIGGER Products_INSERT_UPDATE
ON Products
AFTER INSERT, UPDATE
AS
UPDATE Products
SET Price = Price + Price * 0.38
WHERE Id = (SELECT Id FROM inserted)
Триггерды жою/өшіру/қосу
1 DROP TRIGGER Products_INSERT_UPDATE
2 DISABLE TRIGGER Products_INSERT_UPDATE ON Products
3 ENABLE TRIGGER Products_INSERT_UPDATE ON Products
USE productsdb
GO
CREATE TRIGGER Products_INSERT
ON Products
AFTER INSERT
AS
INSERT INTO History (ProductId, Operation)
SELECT Id, 'Добавлен товар ' + ProductName + ' фирма ' + Manufacturer
FROM INSERTED
USE productsdb
GO
CREATE TRIGGER Products_DELETE
ON Products
AFTER DELETE
AS
INSERT INTO History (ProductId, Operation)
SELECT Id, 'Удален товар ' + ProductName + ' фирма ' + Manufacturer
FROM DELETED
USE productsdb
GO
CREATE TRIGGER Products_UPDATE
ON Products
AFTER UPDATE
AS
INSERT INTO History (ProductId, Operation)
SELECT Id, 'Обновлен товар ' + ProductName + ' фирма ' + Manufacturer
FROM INSERTED