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

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
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM