mysql之存储过程和存储函数

CREATE PROCEDURE  sp_name ([ proc_parameter[,...]])
[ characteristic ...]  routine_body
CREATE FUNCTION   sp_name  ([ func_parameter[,...]])
RETURNS   type [ characteristic  ...]   routine_body
 
 
proc_parameter:    [ IN | OUT | INOUT ]  param_name type
type:     Any valid MySQL data type
characteristic:    LANGUAGE SQL| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT ' string'

routine_body:     Valid SQL procedure statement or statements
 
 
        COMMENT子句是一个MySQL的扩展,它可以被用来描述存储程序。这个信息被SHOW CREATE PROCEDURE和 SHOW CREATE FUNCTION语句来显示。
        MySQL允许子程序包含DDL语句,如CREATE和DROP。MySQL也允许存储程序(但不是存储函数)包含SQL 交互语句,如COMMIT。存储函数不可以包含那些做明确的和绝对的提交或者做回滚的语句。
        存储子程序不能使用LOAD DATA INFILE。

ALTER {PROCEDURE | FUNCTION}   sp_name  [ characteristic  ...]
characteristic:
{ CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT ' string'

DROP {PROCEDURE | FUNCTION} [IF EXISTS]   sp_name
SHOW CREATE {PROCEDURE | FUNCTION}   sp_name
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE ' pattern']

CALL   sp_name([ parameter[,...]])
CALL语句可以用声明为OUT或的INOUT参数的参数给它的调用者传回值。它也“返回”受影响的行数,客户端程序可以在SQL级别通过调用ROW_COUNT()函数获得这个数,从C中是调用the mysql_affected_rows() C API函数来获得

BEGIN ... END复合语句
[ begin_label:] BEGIN
    [ statement_list]
END [ end_label]

变量的使用
DECLARE   var_name[,...]   type  [DEFAULT   value]用来声明局部变量。
SET   var_name  =   expr  [,   var_name  =   expr] ...
SELECT   col_name[,...] INTO   var_name[,...]   table_expr
 
 
存储过程实例:
CREATE PROCEDURE sp1 (x VARCHAR(5))
    BEGIN
        DECLARE xname VARCHAR(5) DEFAULT 'bob';
        DECLARE newname VARCHAR(5);
        DECLARE xid INT;
        SELECT xname,id INTO newname,xid 
            FROM table1 WHERE xname = xname;
        SELECT newname;
    END;
 
 
 
 
函数实例:
mysql>   CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
            ->   RETURN CONCAT('Hello, ',s,'!');
            ->   //
Query OK, 0 rows affected (0.00 sec)
 
 

你可能感兴趣的:(mysql之存储过程和存储函数)