資料庫學習記錄
阿新 • • 發佈:2018-12-05
1.資料庫中的exec命令,可以用來執行儲存過程,可以把儲存過程理解為定義在sql server資料庫中的函式,而exec就是去執行該定義的函式,既然是函式,那麼定義時就有一下幾種型別
1)無引數無返回值的
2)有引數無返回值的
3)無引數有返回值的
3)有引數有返回值的
下面舉幾個簡單的例子,供簡單理解
(1 無引數
create procedure sp_latvia_sys_role --建立一個儲存過程,其中sp_latvia_sys_role是建立的儲存過程名稱
as --作為(儲存過程執行 本質上就是去執行一條定義好的語句)
begin
select * from sys_role
end
2.帶輸入引數
create procedure procedure_proc_GetoffinfoById --(儲存過程名) @Id int--(引數名 引數型別) as select Name from dbo.Office_Info where [email protected](sql語句) exec procedure_proc_GetoffinfoById 2--(儲存過程名稱之後,空格加上引數,多個引數中間以逗號分隔)
注:引數賦值是,第一個引數可以不寫引數名稱,後面傳入引數,需要明確傳入的是哪個引數名稱
3.帶輸入輸出引數
create procedure proc_office_info--(儲存過程名)
@Id int,@Name varchar(20) output--(引數名 引數型別)傳出引數要加上output
as
begin
select @Name=Name from dbo.Office_Info where [email protected] --(sql語句)
end
declare @houseName varchar(20) --宣告一個變數,獲取儲存過程傳出來的值
exec proc_office_info--(儲存過程名)
4,@houseName output--(傳說引數要加output 這邊如果用@變數 = OUTPUT會報錯,所以換一種寫法)
select @houseName--(顯示值)
4.帶返回值的
create procedure proc_office_info--(儲存過程名) @Id int--(引數名 引數型別) as begin if(select Name from dbo.Office_Info where [email protected])=null --(sql語句) begin return -1 end else begin return 1 end end declare @house varchar(20) --宣告一個變數,獲取儲存過程傳出來的值 exec @house=proc_office_info 2 --(呼叫儲存過程,用變數接收返回值) --注:帶返回值的儲存過程只能為int型別的返回值 print @house