Використання процедур, що зберігаються

При використанні складної СУБД, що реалізовує повний набір функцій клієнт-серверної СУБД, розробник додатка, що взаємодіє з базою даних, отримує в своє розпорядження декілька додаткових дуже потужних інструментів, що дозволяють полегшити, прискорити і забезпечити процес взаємодії з базою даних в порівнянні з локальними базами даних. Одними з основних таких можливостей є способи організації і використання процедур, що зберігаються, і тригерів. Питання створення і програмування процедур, що зберігаються, і тригерів, а також всілякі питання, пов'язані з особливостями їх реалізації в конкретних СУБД, виходять за рамки даного курсу. Тут же в основному розгледять питання використання процедур, що зберігаються, при роботі з SQL Server без пояснення того, як саме створювалася та або інша процедура, що зберігалася.

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

Процедури, що зберігаються, володіють рядом переваг, головними з яких є такі, як підвищення швидкодії додатка при використанні процедур, що зберігаються, для обробки даних, підвищення безпеки додатка при роботі з даними.

У реальних застосуваннях, якщо використовується СУБД, що підтримує можливості використання процедур, що зберігаються, рекомендується скористатися цим і створювати додаток з їх застосуванням. Крім того, рекомендується все найбільш типові і часто виникаючі дії, які пов'язані з обробкою даних, що містяться в базі даних, а також операції вставки, видалення і зміни проводити за допомогою виклику заздалегідь створених процедур, що зберігаються.

Розглянемо приклад створення і використання простої процедури, що зберігається, дозволяє додати новий товар в таблицю "Товари" бази даних. Текст процедури, що зберігається, реалізованої в СУБД SQL Server 2005, виглядає таким чином:

CREATE| PROCEDURE AddProduct @PRODUCTID int @ProductName varchar(100) @ProductPrice floatAS INSERT INTO ТовариVALUES (@ProductID,@ProductName,@ProductPrice)

Дана процедура, що зберігається, використовує три значення змінних для формування запиту на додавання даних в таблицю "Товари".

Для її виклику можна скористатися об'єктом SqlCommand. Текст програми, що реалізовує виклик даної процедури, що зберігається, приведений нижче.

SqlCommand cmd_SQL=new SqlCommand ("AddProduct",sqlCon);cmd_SQL.CommandType = CommandType.StoredProcedure;string[] strProduct = tb_AddProduct.Text.Split(new char[]{''});cmd_SQL.Parameters.Add(new SqlParameter("@ProductID", SqlDbType.Int, 4));cmd_SQL.Parameters["@ProductID"].Value = Convert.ToInt32(strProduct[0]);cmd_SQL.Parameters.Add(new SqlParameter ("@ProductName" SqlDbType.NVarChar, 100));cmd_SQL.Parameters["@ProductName"].Value = strProduct[1];cmd_SQL.Parameters.Add(new SqlParameter("@ProductPrice", SqlDbType.Float, 8));cmd_SQL.Parameters["@ProductPrice"].Value = Convert.ToDouble(strProduct[2]); try{ sqlCon.Open(); int до = cmd_SQL.ExecuteNonQuery();}finally{ sqlCon.Close(); }

В процесі роботи даної програми текст, введений користувачем в елемент TextBox, перетвориться в масив рядків. У колекцію Parameters об'єкту SqlConnection додається три параметри, відповідних параметрам процедури, що зберігається. Для них встановлюються значення, раніше поміщені в масив рядків. Після чого відкривається з'єднання і посилається запит на виконання процедури, що зберігається, за допомогою команди ExecuteNonQuery().

З даного прикладу видно, що при додаванні нового параметра, промовця в ролі параметра процедури, що зберігається, необхідно обов'язково указувати його типа, а також довжину (для рядкових типів це кількість символів, для числових - кількість байт).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: