delimiter $$ -- 不带参数的存储过程 create procedure select_emp_count() begin select count(0) from emp; end ;; delimiter $$ -- 带参数的存储过程 create procedure select_em_in(in ename varchar(255)) begin select * from emp where ename=ename; end;; call select_em_in('smith');
MySQL 支持 in (传递给存储过程),out (从存储过程传出) 和 inout (对存储过程传入和传出) 类型的参数。存储过程的代码位于 begin 和 end 语句内,它们是一系列 select 语句,
用来检索值,然后保存到相应的变量 (通过 into 关键字)
delimiter ;; create procedure select_emp_inout( in _ename varchar(222), out _deptno varchar(22), inout _empno varchar(222) ) begin select deptno from emp where ename=_ename and empno=_empno into _deptno; end;; set @_empno = '7499'; set @_name = 'ALLEN'; call select_emp_inout(@_name, @_deptno, @_empno); select @_deptno as deptno, @_empno as empno;
- IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
- OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
- INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)