MySQL儲存過程(帶輸入引數)例項

2021-07-23 06:32:42 字數 1707 閱讀 5617

第一次寫儲存過程,參考了《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)

)begin

insert into customers (cust_num,company,cust_rep,credit_limit)

values(c_num,c_name,c_rep,cred_lim);

update salesreps

set quota=quota+quota+tgt_sls

where empl_num=c_rep;

update offices

set target =target+tgt_sls

where city=c_offc;

commit;

end //

call `add_cust`('李四',504,200.00,500.00,309,'廣州');

儲存過程帶in引數

set ansi nulls on set quoted identifier on goalter procedure dbo testlist userid nvarchar 4000 asdeclare search array nvarchar 100 begin set search ar...

Oracle帶輸入輸出引數的儲存過程

一 使用輸入引數 需求 在emp copy中新增一條記錄,empno為已有empno的最大值 1,ename不能為空且長度必須大於0,deptno為60。建立儲存過程 create or replace procedure insert emp emp name in varchar2,dept n...

oracle儲存過程 帶引數的儲存過程

帶引數的儲存過程 舉例 為指定的員工漲100元的工資,列印漲前和漲後的工資 如果帶參,需要指定是輸入引數還是輸出引數 create orreplace procedure raisesalary eno in number as 定義乙個變數儲存漲前的薪水,引用emp中sal的型別作為psal的型別...