1. 程式人生 > >數據庫學習記錄

數據庫學習記錄

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
技術分享圖片

數據庫學習記錄