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



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

DECLARE variable1 INT; 
SET variable1 = parameter1 + 1; 
IF variable1 = 0 THEN 
INSERT INTO t VALUES (17); 
END IF; 
IF parameter1 = 0 THEN 
UPDATE t SET s1 = s1 + 1; <-- 
ELSE 
UPDATE t SET s1 = s1 + 2; 
END IF; 
END;
Вызов процедуры теперь будет таким:
mysql> CALL p2(0) // Query OK, 2 rows affected (0.28 sec)
и в результате запроса мы получим:
mysql> SELECT * FROM t
+----+ 
| s1 | 
+----+ 
| 6 | 
| 6 | 
+------+ 
2 rows in set (0.01 sec)
Кроме условных, возможны и любые циклические конструкции:
CREATE PROCEDURE p3 () 
BEGIN 
DECLARE v INT; 
SET v = 0; 
WHILE v < 5 DO 
INSERT INTO t VALUES (v); 
SET v = v + 1; 
END WHILE; 
END;
Вызов процедуры:
mysql> CALL p3()
+------+ 
| s1 | 
+------+
…………
 
| 0 | 
| 1 | 
| 2 | 
| 3 | 
| 4 |
+------+
Query OK, 1 row affected (0.00 sec)
Также применимы итерации, переходы, словом, всё, что предполагает стандарт.
Внутри функций и хранимых процедур осуществлена реализация курсоров, но, к сожале-
нию, она пока ограничена (ASESITIVE, READ ONLY и NONSCROLL):
CREATE PROCEDURE p25 (OUT return_val INT) 
BEGIN 
DECLARE a,b INT; 
53


DECLARE cur_1 CURSOR FOR SELECT s1 FROM t; 


Достарыңызбен бөлісу:
1   ...   34   35   36   37   38   39   40   41   ...   51




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

    Басты бет