1. 程式人生 >實用技巧 >其它 >sqlserver執行基礎儲存過程(含輸出引數)

sqlserver執行基礎儲存過程(含輸出引數)


sqlserver之基礎儲存過程

儲存過程是資料庫中,一組為了完成特定功能,預編譯的SQL語句集

儲存過程的優點

1.儲存過程在伺服器端呼叫,執行速度快。
2.儲存過程執行一次後,會駐留在高速緩衝噸初期,提高了系統的效能。
3.使用儲存過程可以完成所有資料庫操作,並可通過科變成的方式控制對資料庫資訊訪問的許可權,確保資料庫的安全。
4.自動完成需要預先執行的任務,儲存過程可以在sqlserver啟動時自動執行。

建立儲存過程

sqlserver執行基礎儲存過程(含輸出引數)

儲存過程型別

1.不含引數的儲存過程
(重點變數先宣告在使用,declare聲明後記得新增資料型別)
變數宣告在as前是引數(分為輸入引數和輸出引數output),在as之後為區域性變數。

create PROCEDURE dbo.testp1
	
AS
BEGIN
	declare @a int;
	set @a=10;
	select @a;
END

執行語句:exec testp1 執行結果:10
2.帶返回值的儲存過程。

create PROCEDURE [dbo].[testp3]
AS
BEGIN
	declare @a int;
	set @a=3;
	return @a;
END

執行語句
declare @testp3 int;
exec @testp3=dbo.testp3;
select @testp3
結果:3
3.執行含有查詢語句的儲存過程

create PROCEDURE [dbo].[testp5]
AS
BEGIN
	
	select * from dbo.test01;
END 

執行語句:exec testp5
4.含引數的儲存過程

create PROCEDURE [dbo].[testp6]
	@datetime1 date,
	@out_number int,
	@in_number int
AS
BEGIN
	insert into dbo.test01 values(@datetime1,@out_number,@in_number);
END

執行語句:exec testp6 ‘2021-5-1’,100,101;
5.帶返回值(含引數)

create PROCEDURE [dbo].[testp7]
	@datetime1 date,
	@out_number int,
	@in_number int
AS
BEGIN
	if @datetime1 is not null
	 begin
	   insert into dbo.test01 values(@datetime1,@out_number,@in_number);
	   return 1;
	 end;
	else 
	   return -1;
END

執行語句:
declare @testp7 int;
exec dbo.testp7 ‘2021-5-2’,200,201;
select @testp7;
結果:1
6.帶輸出引數的儲存過程

create PROCEDURE [dbo].[testp8]
	@out_number int,
	@in_number int,
	@datetime1 date output
AS
BEGIN
  if(@out_number is not null)
   begin
	declare @datet date;
	set @datet=GETDATE();
	insert into dbo.test01 values(@datet,@out_number,@in_number);
	set @[email protected];
  
   end;
  else 
	set @datetime1=null;
END

執行語句:
declare @datetime date;
exec dbo.testp8 300,301,@datetime output;
select @datetime;
結果:當前日期