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 语句是拿到输出参数。

  • 相关阅读:
    剑指offer-第二章排序之年龄排序
    剑指offer—第二章算法之快速排序
    java小程序(课堂作业02)
    关于java的一些小知识(课程作业01)
    Java从命令行接受多个数字并求和
    《大道至简》第一章读后感及伪代码
    大道至简读后感
    GCPC 2013_A Boggle DFS+字典树 CSU 1457
    Aizu 2155 Magic Slayer 背包DP
    UVALive 4255 Guess
  • 原文地址:https://www.cnblogs.com/wsh-ning/p/9146444.html
Copyright © 2011-2022 走看看