• Mysql Programming CS 155P笔记(三)


    CREATE PROCEDURE

    CREATE PROCEDURE sp_name ([proc_parameter[,...]])
        [characteristic ...] routine_body
    mysql> delimiter //
    
     
    
    mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    
        -> BEGIN
    
        ->   SELECT COUNT(*) INTO param1 FROM t;
    
        -> END
    
        -> //
    
    Query OK, 0 rows affected (0.00 sec)
    
     
    
    mysql> delimiter ;
    
     
    
    mysql> CALL simpleproc(@a);
    
    Query OK, 0 rows affected (0.00 sec)
    
     
    
    mysql> SELECT @a;
    
    +------+
    
    | @a   |
    
    +------+
    
    | 3    |
    
    +------+
    
    1 row in set (0.00 sec)
    

    由括号包围的参数列必须总是存在。如果没有参数,也该使用一个空参数列()。每个参数 默认都是一个IN参数。要指定为其它参数,可在参数名之前使用关键词 OUT或INOUT 

    注意: 指定参数为IN, OUT, 或INOUT 只对PROCEDURE是合法的。(FUNCTION参数总是被认为是IN参数)

    procedure需要使用call来调用

    CALL sp_name([parameter[,...]])

    CALL语句调用一个先前用CREATE PROCEDURE创建的程序。

    CALL语句可以用 声明为OUT或的INOUT参数的参数给它的调用者传回值


     

    CREATE FUNCTION

    CREATE FUNCTION sp_name ([func_parameter[,...]])
        RETURNS type
        [characteristic ...] routine_body
        
        proc_parameter:
        [ IN | OUT | INOUT ] param_name type
        
        func_parameter:
        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

    mysql> delimiter //
    
     
    
    mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
    
        -> RETURN CONCAT('Hello, ',s,'!');
    
        -> //
    
    Query OK, 0 rows affected (0.00 sec)
    
     
    
    mysql> delimiter ;
    
     
    
    mysql> SELECT hello('world');
    
    +----------------+
    
    | hello('world') |
    
    +----------------+
    
    | Hello, world!  |
    
    +----------------+
    
    1 row in set (0.00 sec)
    

    RETURNS字句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句 

    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
    mysql> SHOW CREATE FUNCTION test.helloG
    *************************** 1. row ***************************
           Function: hello
           sql_mode:
    Create Function: CREATE FUNCTION `test`.`hello`(s CHAR(20)) RETURNS CHAR(50)
    RETURN CONCAT('Hello, ',s,'!')
    

      

    SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']

    mysql> SHOW FUNCTION STATUS LIKE 'hello'G
    *************************** 1. row ***************************
               Db: test
             Name: hello
             Type: FUNCTION
          Definer: testuser@localhost
         Modified: 2004-08-03 15:29:37
          Created: 2004-08-03 15:29:37
    Security_type: DEFINER
          Comment:
    

      

  • 相关阅读:
    getContentResolver()内容解析者查询联系人、插入联系人
    ContentProvider备份短信,以xml文件存储
    ContentProvider详解
    bindService初步了解
    Service之来电监听(失败的案例)
    Android帧动画
    AlertDialog之常见对话框(单选对话框、多选对话框、进度条对话框)
    BroadcastReceiver之(手动代码注册广播)屏幕锁屏、解锁监听、开机自启
    BroadcastReceiver之有序广播
    [FJOI2015]火星商店问题
  • 原文地址:https://www.cnblogs.com/ecwork/p/8461038.html
Copyright © 2020-2023  润新知