MySQL 存儲過程 declare語句


• Declare語句通常用來聲明本地變量、游標、條件或者handler
• Declare語句只允許出現在begin … end語句中而且必須出現在第一行
• Declare的順序也有要求,通常是先聲明本地變量,再是游標,然后是條件和handler

delimiter //
create procedure simpleproc (out param2 int)
BEGIN
declare n int default 10;
select count(*) into param2 from students where sid>n;
END;
//
delimiter ;


delimiter //
create procedure simpleproc (out param2 int)
BEGIN
select * from students;
declare n int default 10;
select count(*) into param2 from students where sid>n;
END;
//
delimiter ;


delimiter //
create procedure simpleproc (out param2 int)
BEGIN
declare n int default 10;
select * from students;
select count(*) into param2 from students where sid>n;
END;
//
delimiter ;
mysql> drop procedure simpleproc;
Query OK, 0 rows affected (0.07 sec)

mysql> delimiter //
mysql> create procedure simpleproc (out param2 int)
    -> BEGIN
    -> declare n int default 10;
    -> select count(*) into param2 from students where sid>n;
    -> END;
    -> //
Query OK, 0 rows affected (0.04 sec)

mysql> delimiter ;

mysql> call simpleproc(@b);
Query OK, 1 row affected (0.01 sec)

mysql> select @b;
+------+
| @b   |
+------+
|    0 |
+------+
1 row in set (0.00 sec)

mysql> select count(*) from students where sid>10;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.01 sec)

mysql> select n;
ERROR 1054 (42S22): Unknown column 'n' in 'field list'
mysql> drop procedure simpleproc;
Query OK, 0 rows affected (0.15 sec)

mysql> delimiter //
mysql> create procedure simpleproc (out param2 int)
    -> BEGIN
    -> select * from students;
    -> declare n int default 10;
    -> select count(*) into param2 from students where sid>n;
    -> END;
    -> //
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare n int default 10;
select count(*) into param2 from students where sid>n;' at line 4
mysql> delimiter ;

mysql> delimiter //
mysql> create procedure simpleproc (out param2 int)
    -> BEGIN
    -> declare n int default 10;
    -> select * from students;
    -> select count(*) into param2 from students where sid>n;
    -> END;
    -> //
Query OK, 0 rows affected (0.03 sec)

mysql> delimiter ;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM