mysql和SqlServer 在存储过程写法上的区别

以一个最简单的查询语句的存储过程为例:mysql

mysql 版:sql

********不带参数版********code

create PROCEDURE queryStaffProc()  ----注意此处,就算是没有参数,也要加(),若是有参数输入或者输出,就写在()中
BEGIN
select * from tb_staff ;server

ENDclass

call queryStaffProc;   ---注意此处,调用要用callselect

 

**********带输入参数版*************call

create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20))---括号中能够传入多个参数
BEGIN
select * from tb_staff where StaffNo=p_StaffNo ;查询

END存储过程

call queryStaffProc (‘admin’);  ---传入参数word

 

**********带输出参数版*************

create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20),out p_StaffName VARCHAR(20)) --注意输入参数是in,输出参数是out
BEGIN
select StaffName into p_StaffName from tb_staff where StaffNo=p_StaffNo ; ---将要输出的内容赋值给输出参数

END

call queryStaffProc ('admin',@staffName);  --传入两个参数
select @staffName  ---获取值

 

Sql server 版:

*******不带参数版********

create PROCEDURE queryStaffProc  --注意此处,不带(),若是须要定义参数,在下方定义

AS

Begin
 select * from tb_staff ;
END
go
 
exec  queryStaffProc    ---注意此处,执行用exec
go
 
***********带输入参数版***********

create PROCEDURE queryStaffProc  --注意此处,不带(),若是须要定义参数,在下方定义

AS

declare @p_StaffNo varchar(20)

Begin
 select * from tb_staff  where staffNo=@p_StaffNo ;
END
go
 
exec  queryStaffProc  @p_StaffNo='admin'    ---注意此处,两种方式均可以
exec  queryStaffProc ‘admin’   --必须按参数顺序赋值
go
 
***********带输出参数版***********

create PROCEDURE queryStaffProc  --注意此处,不带(),若是须要定义参数,在下方定义

AS

 @p_StaffNo varchar(20),

@p_StaffName varchar(20) output   --输出参数

Begin
 select @p_StaffName =StaffName  from tb_staff  where staffNo=@p_StaffNo ;
 
END
go
 
---调用------
declare @staffName varchar(20),
exec  queryStaffProc ‘admin’, @staffName output   --必须按参数顺序赋值
select @staffName as '姓名'
go
相关文章
相关标签/搜索