sqlserver執行基礎儲存過程(含輸出引數)
阿新 • 來源:網路 • 發佈:2021-04-29
sqlserver之基礎儲存過程
儲存過程是資料庫中,一組為了完成特定功能,預編譯的SQL語句集
儲存過程的優點
1.儲存過程在伺服器端呼叫,執行速度快。
2.儲存過程執行一次後,會駐留在高速緩衝噸初期,提高了系統的效能。
3.使用儲存過程可以完成所有資料庫操作,並可通過科變成的方式控制對資料庫資訊訪問的許可權,確保資料庫的安全。
4.自動完成需要預先執行的任務,儲存過程可以在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;
結果:當前日期
