mysql和SqlServer 在存储过程写法上的区别
以一个最简单的查询语句的存储过程为例:
mysql 版:
********不带参数版********
create PROCEDURE queryStaffProc() ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中
BEGIN
select * from tb_staff ;
END
call queryStaffProc; ---注意此处,调用要用call
**********带输入参数版*************
create PROCEDURE queryStaffProc(IN p_StaffNo VARCHAR(20))---括号中可以传入多个参数
BEGIN
select * from tb_staff where StaffNo=p_StaffNo ;
END
call queryStaffProc (‘admin’); ---传入参数
**********带输出参数版*************
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
create PROCEDURE queryStaffProc --注意此处,不带(),如果需要定义参数,在下方定义
AS
declare @p_StaffNo varchar(20)
create PROCEDURE queryStaffProc --注意此处,不带(),如果需要定义参数,在下方定义
AS
@p_StaffNo varchar(20),
@p_StaffName varchar(20) output --输出参数