1. 程式人生 > >資料庫學習記錄

資料庫學習記錄

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
複製程式碼