数据库的函数、存储过程、触发器详解

一.变量

1.系统变量  global session

2.用户自定义变量

1.不用提前声明,使用时直接''  @变量名      ''

2.set @name='lisi';

set 字段名 into @name from 表名

3.局部变量

1.需要用declare声明

2.declare 变量名 类型 

3.set 变量名=值

二.触发器

.1函数

DELIMITER $$

USE `shujuku`$$

DROP FUNCTION IF EXISTS `PysxCx`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `PysxCx`(zw VARCHAR(20)) RETURNS VARCHAR(20) CHARSET utf8mb4
    READS SQL DATA
BEGIN
       SET @pysx='';
       SET @l=CHAR_LENGTH(zw);
       SET @i=1;
    WHILE (@i<=@l) DO
          SELECT jp INTO @jp FROM hzpyb  WHERE hz=SUBSTR(zw,@i,1);
          SET @pysx=CONCAT(@pysx,@jp);
          SET @i=@i+1;
           END WHILE;    
    RETURN @pysx;
    END$$

DELIMITER ;

                                      触发器1

DELIMITER $$

USE `shujuku`$$

DROP TRIGGER `Update_mcsx_before_insert_goods`$$

CREATE
    TRIGGER `Update_mcsx_before_insert_goods` BEFORE INSERT ON `goods` 
    FOR EACH ROW BEGIN   
     SET new.abbreviations=pysxcx(new.gname);    
END;
$$

DELIMITER ;

                                     触发器2

DELIMITER $$

USE `shujuku`$$

DROP TRIGGER `Update_mcsx_before_update_goods_gname`$$

CREATE
    TRIGGER `Update_mcsx_before_update_goods_gname` BEFORE UPDATE ON `goods` 
    FOR EACH ROW BEGIN    
      IF new.gname<>old.gname THEN      
            SET new.abbreviations=pysxcx(new.gname);     
      END IF;    
END;
$$

DELIMITER ;

2超市购买物品

goodswh

DELIMITER $$

USE `shujuku`$$

DROP PROCEDURE IF EXISTS `goodswh`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `goodswh`(gid INT,gname VARCHAR(20),
    unit VARCHAR(20),barcode VARCHAR(20),
    retail_Price DECIMAL(10,2),
    promotional_Price DECIMAL(10,2),
    STATUS TINYINT
    )
BEGIN
       IF gid=0 THEN
        INSERT INTO goods
        (gname,unit,barcode,retai
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dawn黎明开始

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值