MySQL存储过程(带输入参数)实例

来源:互联网 发布:数据挖掘相关研究生 编辑:程序博客网 时间:2024/04/29 00:27
第一次写存储过程,参考了《SQL完全手册》,写了一个涉及到三张表的存储过程,简单实现了往一张表插入数据,修改另外两张表的功能。MySQL的语法和其他数据库语法有区别,写的过程需要特别注意。还有就是";"的问题,需要用DELIMITER //转义,因为在MySQL中,DELIMITER本身就是“;”的意思,具体这里不做详细说明。
DROP TABLE IF EXISTS `CUSTOMERS`;create table CUSTOMERS (`id` int(11) NOT NULL AUTO_INCREMENT, -- ID`cust_num` int(11),-- 客户编号`company` varchar(20),-- 公司名称`cust_rep` int(11),-- 雇员`credit_limit` decimal(16,2),-- 信用限额PRIMARY KEY(`id`));DROP TABLE IF EXISTS `SALESREPS`;CREATE TABLE `SALESREPS`(`id` int(11) NOT NULL AUTO_INCREMENT,-- ID`quota` decimal(16,2),-- 销售目标`empl_num` int(11),PRIMARY KEY(`id`));INSERT INTO `SALESREPS`(ID,QUOTA,EMPL_NUM) VALUES(1,20000.00,103);DROP TABLE IF EXISTS `OFFICES`;CREATE TABLE `OFFICES`(`id` int(11) NOT NULL AUTO_INCREMENT,`target` decimal(16,2),`city` varchar(20),PRIMARY KEY(`id`));INSERT INTO `OFFICES`(id,target,city) values(1,20000.00,'深圳'); DROP PROCEDURE IF EXISTS `ADD_CUST`;DELIMITER //CREATE PROCEDURE `ADD_CUST`(in c_name varchar(20),in c_num integer,in cred_lim decimal(16,2),in tgt_sls decimal(16,2),in c_rep integer,in c_offc varchar(20))BEGINinsert into customers (cust_num,company,cust_rep,credit_limit)values(c_num,c_name,c_rep,cred_lim);update salesrepsset quota=quota+quota+tgt_slswhere empl_num=c_rep;update officesset target =target+tgt_slswhere city=c_offc;commit;END //call `ADD_CUST`('李四',504,200.00,500.00,309,'广州');

0 0
原创粉丝点击