SQLserver存儲過程寫法與設(shè)置定時(shí)執(zhí)行存儲過程方法詳解
最近工作中需要寫SQLserver的存儲過程,第一次使用,簡單記錄下,以防遺忘。
在SQLserver可視化工具中編寫,我的工具如下圖:
首先點(diǎn)擊你的數(shù)據(jù)庫,找到可編程性,在可編程性里面右擊存儲過程-->點(diǎn)擊新建存儲過程
然后開始寫你的存儲過程SQL
--寫法(無參): USE [Test] --[Test]使用的數(shù)據(jù)來源(數(shù)據(jù)庫名) 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) --如果需要變量的話,則是用此方法定義變量,類型根據(jù)需要自定義 --將D表中條件為P01=0的P02值查出來賦值給變量@FLAG SELECT @FLAG=P02 from D where P01 = '0' --判斷變量值,執(zhí)行判斷條件里面的SQL語句,這里if里面必須要寫開頭的begin與結(jié)束的end if (@FLAG=0) --如果變量值為0,就刪除A,B,C三個(gè)表里的數(shù)據(jù),否則就插入數(shù)據(jù) begin delete A delete B delete C end insert into A (字段A,字段B,.....)VALUES(數(shù)據(jù)1,數(shù)據(jù)2,.....) insert into B (字段A,字段B,.....)VALUES(數(shù)據(jù)1,數(shù)據(jù)2,.....) insert into C (字段A,字段B,.....)VALUES(數(shù)據(jù)1,數(shù)據(jù)2,.....) END
如上就是一個(gè)簡單的存儲過程了,完成后點(diǎn)擊執(zhí)行就行了。以上可以簡單理解為,用到的數(shù)據(jù)庫是[Test]數(shù)據(jù)庫,新建的存儲過程是[dbo].[PR_ShowData],因?yàn)槲业臉I(yè)務(wù)是需要根據(jù)D表的條件更新A,B,C三個(gè)表的數(shù)據(jù)的,所以判斷了結(jié)果后根據(jù)條件先把A,B,C三個(gè)表的原有數(shù)據(jù)刪除或者保留,然后把需要的數(shù)據(jù)再插入到A,B,C三個(gè)表中。
剛開始時(shí)在這里踩了一個(gè)坑,插入時(shí)一直報(bào)錯(cuò)
以A表舉例:
如果插入的數(shù)據(jù)只是一段固定的值,則字段和數(shù)據(jù)之間要用VALUES,格式insert into A (字段A,字段B,.....)VALUES(數(shù)據(jù)1,數(shù)據(jù)2,.....);
如果是從其他表查出來的數(shù)據(jù)結(jié)果,則不使用VALUES,直接insert into A (字段A,字段B,.....)(select * from 數(shù)據(jù)來源表名);只要字段對應(yīng)即可。
ALTER PROCEDURE 相對于Create PROCEDURE優(yōu)點(diǎn):
(1)ALTER PROC 期望找到現(xiàn)存的存儲過程,而CERATE不是。
(2)ALTER PROC 保留了已經(jīng)建立的存儲過程的任何權(quán)限。它在系統(tǒng)對象中保留了相同的對象ID并允許保留依賴關(guān)系。
例如,如果過程A調(diào)用過程B,并刪除和重新創(chuàng)建了過程B,那么就不能再看到這兩者之間的依賴關(guān)系。如果使用ALTER,則依賴關(guān)系依然存在。
(3) ALTER PROC 在其他對象上保留了任何依賴關(guān)系的信息,這些對象可以調(diào)用修改的存儲過程。
編寫執(zhí)行的腳本,比如多久執(zhí)行一次存儲過程等
找到SQL Server代理,右擊作業(yè)-->新建作業(yè)
1.常規(guī)(名稱自己定義,確定即可)
2.點(diǎn)擊步驟-->點(diǎn)擊最下面的新建
2.1)步驟名稱(一般是exec 存儲過程名,我的是exec [dbo].[PR_ShowData])
2.2)類型選擇Transact-SQL 腳本(T-SQL)
2.3)數(shù)據(jù)庫選擇你的數(shù)據(jù)庫
2.4)命令exec PR_ShowData,最后點(diǎn)擊確定即可。
3.點(diǎn)擊計(jì)劃-->新建
3.1)名稱寫2.4)中的,我的是exec PR_ShowData
3.2)計(jì)劃類型根據(jù)自己的業(yè)務(wù)需求,我是重復(fù)執(zhí)行,后面的已啟用打勾
3.3)頻率-->執(zhí)行(我選擇的是每天)-->執(zhí)行間隔(我選的1天)
3.4)每天頻率我選擇的是執(zhí)行間隔十分鐘執(zhí)行一次,開始時(shí)間和結(jié)束時(shí)間根據(jù)自己需要選擇時(shí)間段
3.5)持續(xù)時(shí)間(開始和結(jié)束時(shí)間自己選擇,如果要一直執(zhí)行就選擇無結(jié)束日期)
3.6)摘要-->說明(會把你設(shè)置的信息總結(jié),可以看是不是復(fù)合自己的要求)
3.7)最后點(diǎn)擊確定即可
我這里計(jì)劃列表顯示的有是因?yàn)槲乙呀?jīng)建過了。
如上便實(shí)現(xiàn)了SQLserver存儲過程簡單寫法與設(shè)置定時(shí)執(zhí)行存儲過程方法了
總結(jié)
到此這篇關(guān)于SQLserver存儲過程寫法與設(shè)置定時(shí)執(zhí)行存儲過程的文章就介紹到這了,更多相關(guān)SQLserver設(shè)置定時(shí)執(zhí)行存儲過程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)的幾個(gè)方法
刪除數(shù)據(jù)庫中重復(fù)數(shù)據(jù)的幾個(gè)方法...2006-12-12Sql Server 開窗函數(shù)Over()的使用實(shí)例詳解
這篇文章主要介紹了Sql Server 開窗函數(shù)Over()的使用,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05sqlserver中將varchar類型轉(zhuǎn)換為int型再進(jìn)行排序的方法
sql中把varchar類型轉(zhuǎn)換為int型然后進(jìn)行排序,如果我們數(shù)據(jù)庫的ID設(shè)置為varchar型的 在查詢的時(shí)候order by id的話2012-06-06sql cast,convert,QUOTENAME,exec 函數(shù)學(xué)習(xí)記錄
將某種數(shù)據(jù)類型的表達(dá)式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CAST 和 CONVERT 提供相似的功能。2009-10-10SQL?Server數(shù)據(jù)庫表的創(chuàng)建與管理操作大全
這篇文章主要給大家介紹了關(guān)于SQL?Server數(shù)據(jù)庫表的創(chuàng)建與管理操作的相關(guān)資料,?SQL?Server是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它可以幫助用戶創(chuàng)建、管理和查詢數(shù)據(jù),文中介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01