首頁 > 軟體

SQLserver儲存過程寫法與設定定時執行儲存過程方法詳解

2023-03-15 06:03:07

最近工作中需要寫SQLserver的儲存過程,第一次使用,簡單記錄下,以防遺忘。

在SQLserver視覺化工具中編寫,我的工具如下圖:

首先點選你的資料庫,找到可程式化性,在可程式化性裡面右擊儲存過程-->點選新建儲存過程

然後開始寫你的儲存過程SQL

--寫法(無參):
 
USE [Test]		--[Test]使用的資料來源(資料庫名)
GO
/****** Object:  StoredProcedure [dbo].[PR_ShowData]    Script Date: 2022/11/12 13:58:38 ******/		--[dbo].[PR_ShowData]新建儲存過程,[dbo].[PR_ShowData]是儲存過程名
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
 
ALTER PROCEDURE [dbo].[PR_ShowData]		--修改儲存過程,[dbo].[PR_ShowData]是儲存過程名
 
AS
BEGIN
 
	 declare @FLAG VARCHAR(50)		--如果需要變數的話,則是用此方法定義變數,型別根據需要自定義
 
--將D表中條件為P01=0的P02值查出來賦值給變數@FLAG
SELECT @FLAG=P02 from D where P01 = '0'
 
	--判斷變數值,執行判斷條件裡面的SQL語句,這裡if裡面必須要寫開頭的begin與結束的end
	 if (@FLAG=0)        --如果變數值為0,就刪除A,B,C三個表裡的資料,否則就插入資料
		begin
			delete A
			delete B
			delete C
		end
 
insert into A (欄位A,欄位B,.....)VALUES(資料1,資料2,.....)
insert into B (欄位A,欄位B,.....)VALUES(資料1,資料2,.....)
insert into C (欄位A,欄位B,.....)VALUES(資料1,資料2,.....)
 
END

如上就是一個簡單的儲存過程了,完成後點選執行就行了。以上可以簡單理解為,用到的資料庫是[Test]資料庫,新建的儲存過程是[dbo].[PR_ShowData],因為我的業務是需要根據D表的條件更新A,B,C三個表的資料的,所以判斷了結果後根據條件先把A,B,C三個表的原有資料刪除或者保留,然後把需要的資料再插入到A,B,C三個表中。

剛開始時在這裡踩了一個坑,插入時一直報錯

以A表舉例:

如果插入的資料只是一段固定的值,則欄位和資料之間要用VALUES,格式insert into A (欄位A,欄位B,.....)VALUES(資料1,資料2,.....);
如果是從其他表查出來的資料結果,則不使用VALUES,直接insert into A (欄位A,欄位B,.....)(select * from 資料來源表名);只要欄位對應即可。

ALTER PROCEDURE 相對於Create PROCEDURE優點:

(1)ALTER PROC 期望找到現存的儲存過程,而CERATE不是。

(2)ALTER PROC 保留了已經建立的儲存過程的任何許可權。它在系統物件中保留了相同的物件ID並允許保留依賴關係。

例如,如果過程A呼叫過程B,並刪除和重新建立了過程B,那麼就不能再看到這兩者之間的依賴關係。如果使用ALTER,則依賴關係依然存在。

(3) ALTER PROC 在其他物件上保留了任何依賴關係的資訊,這些物件可以呼叫修改的儲存過程。

編寫執行的指令碼,比如多久執行一次儲存過程等

找到SQL Server代理,右擊作業-->新建作業

1.常規(名稱自己定義,確定即可)

2.點選步驟-->點選最下面的新建

2.1)步驟名稱(一般是exec 儲存過程名,我的是exec [dbo].[PR_ShowData])

2.2)型別選擇Transact-SQL 指令碼(T-SQL)

2.3)資料庫選擇你的資料庫

2.4)命令exec PR_ShowData,最後點選確定即可。

3.點選計劃-->新建

3.1)名稱寫2.4)中的,我的是exec PR_ShowData

3.2)計劃型別根據自己的業務需求,我是重複執行,後面的已啟用打勾

3.3)頻率-->執行(我選擇的是每天)-->執行間隔(我選的1天)

3.4)每天頻率我選擇的是執行間隔十分鐘執行一次,開始時間和結束時間根據自己需要選擇時間段

3.5)持續時間(開始和結束時間自己選擇,如果要一直執行就選擇無結束日期)

3.6)摘要-->說明(會把你設定的資訊總結,可以看是不是複合自己的要求)

3.7)最後點選確定即可

我這裡計劃列表顯示的有是因為我已經建過了。

如上便實現了SQLserver儲存過程簡單寫法與設定定時執行儲存過程方法了

總結

到此這篇關於SQLserver儲存過程寫法與設定定時執行儲存過程的文章就介紹到這了,更多相關SQLserver設定定時執行儲存過程內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com