i.   SQLyogè¿æ¥MySQL8.0ä¹åéè¦å ä¿®æ¹rootç认è¯æ¹å¼ï¼å¦åä¼åº2058çé误
   ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ii.  å建å½æ°æ触åå¨åè¦å ä¿®åéçå¼
  SET GLOBAL log_bin_trust_function_creators=1;
  This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
äºãæ°æ®åºå表çå建
CREATE TABLE `spmcb` (
 `spid` int NOT NULL AUTO_INCREMENT COMMENT 'ååå称表',
 `spmc` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'è´§åå称',
 `sptm` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'è´§åæ¡ç ',
 `dw` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '计éåä½',
 `dj` decimal(9,2) DEFAULT NULL COMMENT 'é¶å®ä»·',
 `spzt` tinyint DEFAULT '0' COMMENT 'ååç¶æ(0 æ£å¸¸, 1 ä¸æ¶)',
 `mcsx` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'å称缩å(ç±è§¦åå¨èªè¡ç»´æ¤)',
 PRIMARY KEY (`spid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
CREATE TABLE `spkcb` (
 `kcid` int NOT NULL AUTO_INCREMENT COMMENT 'åºåid',
 `spid` int DEFAULT NULL COMMENT 'ååid(ç¨æ¥ä»£è¡¨è´§å)',
 `kcsl` decimal(18,3) DEFAULT '0.000' COMMENT '(å½å)åºåæ°é',
 `zrkc` decimal(18,3) DEFAULT '0.000' COMMENT 'æ¨æ¥åºå(ç¨äºæ¥æ¸ )',
 `yckc` decimal(18,3) DEFAULT '0.000' COMMENT 'æååºå(ç¨äºæç»)',
 PRIMARY KEY (`kcid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
3ãå建PysxCx()å½æ°
SET GLOBAL log_bin_trust_function_creators=1;
DELIMITER $$
CREATE FUNCTION `lx1`.`PysxCx`(zw VARCHAR(20))
  RETURNS VARCHAR(10)
BEGIN
 SET @pysx='';
 SET @l=CHAR_LENGTH(zw);
 SET @i=1;
 WHILE (@i<[email protected]) DO
  SELECT jp INTO @jp FROM hzpyb WHERE hz=SUBSTR(zw,@i,1);
  SET @pysx=CONCAT(@PYSX,@JP);
  SET @[email protected]+1;
 END WHILE;
 RETURN @PYSX;
END$$
DELIMITER ;
4ãæµè¯PysxCx()å½æ°
  SELECT pysxcx('å¼ ä¸ä¸°');
5ãç¼ååå¨è¿ç¨SpxxWh
DELIMITER $$
CREATE PROCEDURE `lx1`.`SpxxWh`(spid INT,spmc VARCHAR(50),sptm VARCHAR(20),dw VARCHAR(10),dj NUMERIC(9,2),spzt TINYINT)
BEGIN
 IF spid=0 THEN
  INSERT INTO spmcb (spmc,sptm,dw,dj) VALUE (spmc,sptm,dw,dj);
 ELSEIF spid>0 THEN
  UPDATE spmcb SET `spmcb`.`spmc`=spmc,`spmcb`.`sptm`=sptm,`spmcb`.`dw`=dw,`spmcb`.`dj`=dj,`spmcb`.`spzt`=spzt WHERE `spmcb`.`spid`=spid;
 ELSE
  DELETE FROM spmcb WHERE `spmcb`.`spid`=-spid;
 END IF;
END$$
DELIMITER ;
6ãæµè¯åå¨è¿ç¨SpxxWh
i. æ°å¢
CALL spxxwh(0,'ç¾äºå¯ä¹','101','ç¶',3,0);
SELECT * FROM spmcb;
ii.ä¿®æ¹
CALL spxxwh(4,'ç¾äºå¯ä¹','101','ç¶',3.5,0);
SELECT * FROM spmcb;
iii.å é¤
CALL spxxwh(-4,'ç¾äºå¯ä¹','101','ç¶',3.5,0);
SELECT * FROM spmcb;
6ãç¼åspmcbä¸ç触åå¨
i. insert before
DELIMITER $$
CREATE TRIGGER `lx1`.`Clmcsx_before_insert_spmcb` BEFORE INSERT ON `lx1`.`spmcb`
FOR EACH ROW BEGIN
 SET new.mcsx=pysxcx(new.spmc);
END$$
DELIMITER ;
éªè¯è§¦åå¨
ii. insert after
DELIMITER $$
CREATE TRIGGER `lx1`.`Insert_Spkcb_after_insert` AFTER INSERT ON `lx1`.`spmcb`
FOR EACH ROW BEGIN
 INSERT INTO spkcb (spid) VALUE (new.spid);
END$$
DELIMITER ;
éªè¯è§¦åå¨
iii update before
DELIMITER $$
CREATE TRIGGER `lx1`.`Update_mcsx_before_update_spmc` BEFORE UPDATE ON `lx1`.`spmcb`
FOR EACH ROW BEGIN
 IF (new.spmc<>old.spmc) THEN
  SET new.mcsx=pysxcx(new.spmc);
 END IF;
END$$
DELIMITER ;
éªè¯è§¦åå¨
iv delete after
DELIMITER $$
CREATE TRIGGER `lx1`.`Delete_spkcb_after_delete_spmcb` AFTER DELETE ON `lx1`.`spmcb`
FOR EACH ROW BEGIN
 DELETE FROM spkcb WHERE spid=old.spid;
END$$
DELIMITER ;
éªè¯è§¦åå¨
äºãåºç¨ç³»ç»å¼å
 å®è£ 32ä½ODBC驱å¨
1. VC_redist.x86
2. mysql-connector-odbc-8.0.28-win32