數據庫學習記錄
阿新 • • 發佈:2018-12-05
fin 好的 輸入輸出 ret 聲明 har 既然 span bsp
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 Id=@Id--(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 Id=@Id --(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 Id=@Id)=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
數據庫學習記錄