Looping methods in SQL cursors

Source: Internet
Author: User

Looping methods in SQL cursors

MySQL Tutorials >
Mysql> CREATE TABLE Employee (
-> ID int,
-> first_name VARCHAR (15),
-> last_name VARCHAR (15),
-> start_date Date,
-> end_date Date,
-> salary FLOAT (8,2),
-> City VARCHAR (10),
-> description VARCHAR (15)
->);
Query OK, 0 rows affected (0.02 sec)

Mysql>
Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> values (1, ' Jason ', ' www.111cn.net ', ' 19960725 ', ' 20060725 ', 1234.56, ' Toronto ', ' Programmer ');
Query OK, 1 row Affected (0.00 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> values (2, ' Alison ', ' Mathews ', ' 19760321 ', ' 19860221 ', 6661.78, ' Vancouver ', ' Tester ');
Query OK, 1 row affected (0.02 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> values (3, ' James ', ' Smith ', ' 19781212 ', ' 19900315 ', 6544.78, ' Vancouver ', ' Tester ');
Query OK, 1 row Affected (0.00 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> VALUES (4, ' Celia ', ' Rice ', ' 19821024 ', ' 19990421 ', 2344.78, ' Vancouver ', ' Manager ');
Query OK, 1 row affected (0.02 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> values (5, ' Robert ', ' black ', ' 19840115 ', ' 19980808 ', 2334.78, ' Vancouver ', ' Tester ');
Query OK, 1 row Affected (0.00 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> VALUES (6, ' Linda ', ' Green ', ' 19870730 ', ' www.111cn.net ', 4322.78, ' New York ', ' Tester ');
Query OK, 1 row Affected (0.00 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> VALUES (7, ' David ', ' Larry ', ' 19901231 ', ' 19980212 ', 7897.78, ' New York ', ' Manager ');
Query OK, 1 row Affected (0.00 sec)

Mysql>
mysql> INSERT INTO Employee (Id,first_name, last_name, start_date, end_date, salary, city, Description)
-> VALUES (8, ' James ', ' Cat ', ' 19960917 ', ' 20020415 ', 1232.78, ' Vancouver ', ' Tester ');
Query OK, 1 row Affected (0.00 sec)

Mysql>
Mysql> select * from Employee;
+------+------------+-----------+------------+------------+---------+-----------+-------------+
| ID | first_name | last_name | start_date | end_date | Salary | City | Description |
+------+------------+-----------+------------+------------+---------+-----------+-------------+
| 1 | Jason | Martin | 1996-07-25 | 2006-07-25 | 1234.56 | Toronto | Programmer |
| 2 | Alison | Mathews | 1976-03-21 | 1986-02-21 | 6661.78 | Vancouver | Tester |
| 3 | James | Smith | 1978-12-12 | 1990-03-15 | 6544.78 | Vancouver | Tester |
| 4 | Celia | Rice | 1982-10-24 | 1999-04-21 | 2344.78 | Vancouver | Manager |
| 5 | Robert | Black | 1984-01-15 | 1998-08-08 | 2334.78 | Vancouver | Tester |
| 6 | Linda | Green | 1987-07-30 | 1996-01-04 | 4322.78 | New York | Tester |
| 7 | David | Larry | 1990-12-31 | 1998-02-12 | 7897.78 | New York | Manager |
| 8 | James | Cat | 1996-09-17 | 2002-04-15 | 1232.78 | Vancouver | Tester |
+------+------------+-----------+------------+------------+---------+-----------+-------------+
8 rows in Set (0.00 sec)

Mysql>
Mysql>
Mysql>
Mysql> delimiter $$
Mysql> CREATE PROCEDURE myProc (in_customer_id INT)
-> BEGIN
->
-> DECLARE l_first_name VARCHAR (30);
-> DECLARE l_id INT;
-> DECLARE l_city VARCHAR (30);
-> DECLARE L_department_count INT;
-> DECLARE no_more_departments INT;
->
-> DECLARE DEPT_CSR CURSOR for
-> SELECT Id,first_name, City
-> from employee;
->
-> DECLARE CONTINUE HANDLER for not FOUND SET No_more_departments=1;
->
-> SET no_more_departments=0;
-> OPEN DEPT_CSR;
-> Dept_loop:while (no_more_departments=0) do
-> FETCH DEPT_CSR into l_id,l_first_name,l_city;
-> IF No_more_departments=1 THEN
-> LEAVE Dept_loop;
-> End IF;
-> SET l_department_count=l_department_count+1;
-> Select L_id,l_first_name,l_city;
-> End While Dept_loop;
-> Close DEPT_CSR;
-> SET no_more_departments=0;
->
-> end$$
Query OK, 0 rows Affected (0.00 sec)

Mysql> delimiter;
Mysql>
Mysql> call MyProc (1);
+------+--------------+---------+
| l_id | L_first_name | l_city |
+------+--------------+---------+
| 1 | Jason | Toronto |
+------+--------------+---------+
1 row in Set (0.01 sec)

+------+--------------+-----------+
| l_id | L_first_name | l_city |
+------+--------------+-----------+
| 2 | Alison | Vancouver |
+------+--------------+-----------+
1 row in Set (0.01 sec)

+------+--------------+-----------+
| l_id | L_first_name | l_city |
+------+--------------+-----------+
| 3 | James | Vancouver |
+------+--------------+-----------+
1 row in Set (0.01 sec)

+------+--------------+-----------+
| l_id | L_first_name | l_city |
+------+--------------+-----------+
| 4 | Celia | Vancouver |
+------+--------------+-----------+
1 row in Set (0.01 sec)

+------+--------------+-----------+
| l_id | L_first_name | l_city |
+------+--------------+-----------+
| 5 | Robert | Vancouver |
+------+--------------+-----------+
1 row in Set (0.01 sec)

+------+--------------+----------+
| l_id | L_first_name | l_city |
+------+--------------+----------+
| 6 | Linda | New York |
+------+--------------+----------+
1 row in Set (0.01 sec)

+------+--------------+----------+
| l_id | L_first_name | l_city |
+------+--------------+----------+
| 7 | David | New York |
+------+--------------+----------+
1 row in Set (0.03 sec)

+------+--------------+-----------+
| l_id | L_first_name | l_city |
+------+--------------+-----------+
| 8 | James | Vancouver |
+------+--------------+-----------+
1 row in Set (0.03 sec)

Query OK, 0 rows affected (0.03 sec)

Mysql>
Mysql>
Mysql> drop procedure MyProc;
Query OK, 0 rows Affected (0.00 sec)

Mysql>
Mysql>
Mysql>
Mysql>
Mysql>
mysql> drop table Employee;
Query OK, 0 rows Affected (0.00 sec)

Mysql>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.