SQL/MySQL/Procedure Function/Procedure Data Dictionary
Содержание
- 1 Show the procedure"s database, name, language, security type, parameter list, body, definer, comment, and other information
- 2 To get more details on a stored procedure, use the SHOW CREATE PROCEDURE statement
- 3 Use SELECT statement to access on the proc table in the mysql database
- 4 Viewing Stored Procedures
- 5 Viewing Stored Procedures with a LIKE clause
Show the procedure"s database, name, language, security type, parameter list, body, definer, comment, and other information
<source lang="sql">
mysql> mysql> mysql> DELIMITER // mysql> CREATE PROCEDURE myProc (IN in_count INT)
-> BEGIN -> DECLARE count INT default 0; -> -> increment: LOOP -> SET count = count + 1; -> IF count < 20 THEN ITERATE increment; END IF; -> IF count > in_count THEN LEAVE increment; -> END IF; -> END LOOP increment; -> -> SELECT count; -> END -> //
Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> mysql> call myProc(5); +-------+ | count | +-------+ | 20 | +-------+ 1 row in set (0.02 sec) Query OK, 0 rows affected (0.02 sec) mysql> mysql> mysql> mysql> SELECT * FROM mysql.proc WHERE name = "myProc"\G
- 1. row ***************************
db: test name: myProc type: PROCEDURE specific_name: myProc language: SQL sql_data_access: CONTAINS_SQL
is_deterministic: NO
security_type: DEFINER param_list: IN in_count INT returns: body: BEGIN DECLARE count INT default 0; increment: LOOP SET count = count + 1; IF count < 20 THEN ITERATE increment; END IF; IF count > in_count THEN LEAVE increment; END IF; END LOOP increment; SELECT count;
END
definer: root@localhost created: 2007-07-23 18:58:35 modified: 2007-07-23 18:58:35 sql_mode: comment:
1 row in set (0.00 sec) mysql> mysql> drop procedure myProc; Query OK, 0 rows affected (0.00 sec) mysql> mysql>
</source>
To get more details on a stored procedure, use the SHOW CREATE PROCEDURE statement
<source lang="sql">
mysql> mysql> mysql> mysql> DELIMITER // mysql> CREATE PROCEDURE myProc (IN in_count INT)
-> BEGIN -> DECLARE count INT default 0; -> -> increment: LOOP -> SET count = count + 1; -> IF count < 20 THEN ITERATE increment; END IF; -> IF count > in_count THEN LEAVE increment; -> END IF; -> END LOOP increment; -> -> SELECT count; -> END -> //
Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> mysql> call myProc(5); +-------+ | count | +-------+ | 20 | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> mysql> mysql> mysql> mysql> SHOW CREATE PROCEDURE test.myProc\G
- 1. row ***************************
Procedure: myProc sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `myProc`(IN in_count INT) BEGIN
DECLARE count INT default 0; increment: LOOP SET count = count + 1; IF count < 20 THEN ITERATE increment; END IF; IF count > in_count THEN LEAVE increment; END IF; END LOOP increment; SELECT count;
END 1 row in set (0.00 sec) mysql> mysql> drop procedure myProc; Query OK, 0 rows affected (0.00 sec) mysql> mysql>
</source>
Use SELECT statement to access on the proc table in the mysql database
<source lang="sql">
mysql> mysql> mysql> DELIMITER // mysql> CREATE PROCEDURE myProc (IN in_count INT)
-> BEGIN -> DECLARE count INT default 0; -> -> increment: LOOP -> SET count = count + 1; -> IF count < 20 THEN ITERATE increment; END IF; -> IF count > in_count THEN LEAVE increment; -> END IF; -> END LOOP increment; -> -> SELECT count; -> END -> //
Query OK, 0 rows affected (0.02 sec) mysql> DELIMITER ; mysql> mysql> call myProc(5); +-------+ | count | +-------+ | 20 | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> mysql> mysql> mysql> SELECT * FROM mysql.proc WHERE name = "myProc"\G
- 1. row ***************************
db: test name: myProc type: PROCEDURE specific_name: myProc language: SQL sql_data_access: CONTAINS_SQL
is_deterministic: NO
security_type: DEFINER param_list: IN in_count INT returns: body: BEGIN DECLARE count INT default 0; increment: LOOP SET count = count + 1; IF count < 20 THEN ITERATE increment; END IF; IF count > in_count THEN LEAVE increment; END IF; END LOOP increment; SELECT count;
END
definer: root@localhost created: 2007-07-23 18:58:34 modified: 2007-07-23 18:58:34 sql_mode: comment:
1 row in set (0.00 sec) mysql> mysql> drop procedure myProc; Query OK, 0 rows affected (0.00 sec) mysql> mysql> mysql>
</source>
Viewing Stored Procedures
<source lang="sql">
mysql> mysql> mysql> DELIMITER // mysql> CREATE PROCEDURE myProc (IN in_count INT)
-> BEGIN -> DECLARE count INT default 0; -> -> increment: LOOP -> SET count = count + 1; -> IF count < 20 THEN ITERATE increment; END IF; -> IF count > in_count THEN LEAVE increment; -> END IF; -> END LOOP increment; -> -> SELECT count; -> END -> //
Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> mysql> call myProc(5); +-------+ | count | +-------+ | 20 | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> mysql> mysql> SHOW PROCEDURE STATUS\G
- 1. row ***************************
Db: test Name: myProc Type: PROCEDURE Definer: root@localhost Modified: 2007-07-23 18:58:34 Created: 2007-07-23 18:58:34
Security_type: DEFINER
Comment:
- 2. row ***************************
Db: test Name: simpleproc Type: PROCEDURE Definer: root@localhost Modified: 2007-07-17 18:50:06 Created: 2007-07-17 18:50:06
Security_type: DEFINER
Comment:
2 rows in set (0.02 sec) mysql> mysql> mysql> drop procedure myProc; Query OK, 0 rows affected (0.00 sec) mysql> mysql>
</source>
Viewing Stored Procedures with a LIKE clause
<source lang="sql">
mysql> mysql> mysql> DELIMITER // mysql> CREATE PROCEDURE myProc (IN in_count INT)
-> BEGIN -> DECLARE count INT default 0; -> -> increment: LOOP -> SET count = count + 1; -> IF count < 20 THEN ITERATE increment; END IF; -> IF count > in_count THEN LEAVE increment; -> END IF; -> END LOOP increment; -> -> SELECT count; -> END -> //
Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> mysql> call myProc(5); +-------+ | count | +-------+ | 20 | +-------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.02 sec) mysql> mysql> mysql> mysql> SHOW PROCEDURE STATUS LIKE "my%"\G
- 1. row ***************************
Db: test Name: myProc Type: PROCEDURE Definer: root@localhost Modified: 2007-07-23 18:58:34 Created: 2007-07-23 18:58:34
Security_type: DEFINER
Comment:
1 row in set (0.02 sec) mysql> mysql> mysql> drop procedure myProc; Query OK, 0 rows affected (0.00 sec) mysql> mysql> mysql>
</source>