Лабораторная работа №1 Ознакомление с интерфейсом субд mysql



Pdf көрінісі
бет42/51
Дата11.10.2023
өлшемі1.29 Mb.
#480346
1   ...   38   39   40   41   42   43   44   45   ...   51
Metod BDiAKS 11.03.04 2017

Условия и ограничения
Объявление условий
DECLARE condition_name CONDITION FOR condition_value
condition_value:
SQLSTATE [VALUE] sqlstate_value
mysql_error_code
Объявление ограничений
DECLARE handler_type HANDLER FOR condition_value[,...] statement
handler_type:
CONTINUE
| EXIT
| UNDO
condition_value:
SQLSTATE [VALUE] sqlstate_value
condition_name
| SQLWARNING
| NOT FOUND
| SQLEXCEPTION
mysql_error_code
Пример
mysql> CREATE TABLE test.t (s1 int,primary key (s1));
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter //
mysql> CREATE PROCEDURE handlerdemo ()
-> BEGIN
-> DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
-> SET @x = 1;
-> INSERT INTO test.t VALUES (1);
-> SET @x = 2;
-> INSERT INTO test.t VALUES (1);
-> SET @x = 3;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> CALL handlerdemo()//
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @x//
+------+
| @x |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
58


Если вы хотите игнорировать условие вы должны сгенерировать ограничение и ассоцииро-
вать его с пустым блоком . 
DECLARE CONTINUE HANDLER FOR SQLWARNING BEGIN END;
Пример
CREATE PROCEDURE p ()
BEGIN
DECLARE i INT DEFAULT 3;
retry:
REPEAT
BEGIN
DECLARE CONTINUE HANDLER FOR SQLWARNING
BEGIN
ITERATE retry; # illegal
END;
END;
IF i < 0 THEN
LEAVE retry; # legal
END IF;
SET i = i - 1;
UNTIL FALSE END REPEAT;
END;
Курсоры
Курсор — в некоторых реализациях 
языка программирования
 
SQL
 (
Oracle

Microsoft 
SQL Server
) — получаемый при выполнении 
запроса
 результирующий набор и связанный с 
ним указатель текущей записи.
Курсор может возвращать одну строку, несколько строк или ни одной строки. Для 
запросов, возвращающих более одной строки, можно использовать только явный курсор. 
Для повторного создания результирующего набора для других значений параметров курсор 
следует закрыть, а затем повторно открыть.
Курсор может быть объявлен в секциях объявлений любого блока 
PL/SQL
, подпрограммы 
или пакета.
Операторы управления явным курсором

Оператор CURSOR выполняет объявление явного курсора. 

Оператор OPEN открывает курсор, создавая новый результирующий набор на базе 
указанного запроса. 

Оператор FETCH выполняет последовательное извлечение строк из результирующе-
го набора от начала до конца. 

Оператор CLOSE закрывает курсор и освобождает занимаемые им ресурсы 
Курсоры поддерживают хранимые процедуры и функции. Сейчас курсоры имеют три 
свойства:

Asensitive: The server may or may not make a copy of its result table 

Read only: Not updatable 

Non-scrollable: Can be traversed only in one direction and cannot skip rows 
59


Курсоры должны быть объявлены перед объявлением ограничений. Переменные и усло-
вия должны быть объявлены перед курсором. 


Достарыңызбен бөлісу:
1   ...   38   39   40   41   42   43   44   45   ...   51




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет