zoukankan      html  css  js  c++  java
  • 存储过程格式

    DELIMITER ||| /*定义结束符*/

    DROP PROCEDURE IF EXISTS `test` ||| /*删除存储过程如果存在*/

    CREATE PROCEDURE `test`(
    IN Id INT UNSIGNED,  -- 传入参数

    OUT ReturnValue VARCHAR(32), -- 传出参数,定义为错误码
    OUT ReturnMessage VARCHAR(1024) -- 传出参数,定义为运行流程

    )

    MODIFIES SQL DATA
    SQL SECURITY INVOKER
    COMMENT '测试'
    Main : BEGIN /*主体内容开始*/
    /*定义状态*/
    DECLARE SYSError INT DEFAULT 0;
    DECLARE SYSEmpty INT DEFAULT 0;

    /*局部变量*/
    DECLARE V1  VARCHAR(128) DEFAULT '';
    DECLARE V2  INT UNSIGNED DEFAULT 0;
    DECLARE V3  TINYINT UNSIGNED DEFAULT 0;
    DECLARE V4 NUMERIC(16,4) DEFAULT 0.0;
    /* 声明异常处理(定义系统错误),必须放在变量定义之后*/

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET SYSError = 1;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET SYSEmpty = 1;

    /* 初始化变量*/

    -- 存储过程中的变量赋值为 SET
    SET ReturnValue = '';
    SET ReturnMessage = '测试开始;

    -- 开启事务

    START TRANSACTION;

      SELECT price INTO V1 WHERE `id` = Id;

      IF SYSEmpty = 1 THEN 

        SET ReturnValue = 'E_SELECT';

        SET ReturnMessage = CONCAT(ReturnMessage ,'->','没找到');

        LEAVE Main;

        ROLLBACK;

      END IF;

    COMMIT;

    SET ReturnValue = 'OK';
    SET ReturnMessage = CONCAT(ReturnMessage,'->','完毕');
    END |||
    DELIMITER ;

     存储过程调用 : 

    CALL  test(ID,@V,@M);

    SELECT @V,@M;

    CALL 是存储过程的调用,在调用时,需要把所有的参数都写进去,输入和输出。输出参数前 + @ 符号。

    下面的 SELECT 语句是拿到输出参数。

  • 相关阅读:
    bzoj1036树的统计Count
    bzoj 2049 洞穴勘测
    PHP可变参数
    PHP可变参数
    读取数量不定的输入数据
    读取数量不定的输入数据
    字符导致的不便
    字符导致的不便
    Welcome to the world of Java! ^O^ cmd + notepad + HelloWorld
    Welcome to the world of Java! ^O^ cmd + notepad + HelloWorld
  • 原文地址:https://www.cnblogs.com/wsh-ning/p/9146444.html
Copyright © 2011-2022 走看看