這次要研究的是MSSQL的預存程序,這次只研究如何執行和存檔相關的問題,還有一些操作等下一篇再研究。首先介紹使用到的程式碼,資料表的介紹先省略,因為以下的查詢只是更新指定id的時間而已,各位可以換成自己的資料表進行研究。

UPDATE dbo.test set test_time = getdate() where id = '1'
select * from dbo.test where id = '1'

查詢結果如下:
0001

新增預存程序的方式是,在以下畫面在目標資料表右鍵 > 新增查詢

0003    

接下來,以這個程式為例,把查詢的棕色部份加上去(其實只要UPDATE那行,定期執行都是改資料表很少定期查詢的)。
--新增的語法如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE TEST_ADD
AS
BEGIN
SET NOCOUNT ON

UPDATE dbo.test set test_time = getdate() where id = '1'
END
GO




--修改的語法如下:

USE [testNews]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[TEST_ADD]
--@test_id varchar(10)
AS
SET NOCOUNT ON
BEGIN TRAN

UPDATE dbo.test set test_time = getdate() where id = '1'

COMMIT TRAN

 


ps:建好預存程序要重開sql server,這樣才可以避免出現"找不到物件"的錯誤訊息。

0005-3 複製

要注意的是,如果要新增預存程序是在新增查詢的時候使用,如果只是執行指令只要右鍵執行預存程序或是alt+f5都可以。如果有重覆的資料會顯示已有預存程序的錯誤訊息如下圖。


0005-4 複製  

最後是在查詢中執行預存程序的方式,比較一般的寫法是像下面這樣直接exec再查詢看結果,可以看到時間有更新。

exec dbo.TEST_ADD

select * from dbo.test where id = '1'

0006-1

另一種方式是範例的方式,這個做法就比較正式了,應該說store procedure的執行方式都大同小異,先切換資料表再exec,變數只是接回傳值如下:

USE [testNews]
GO

DECLARE @return_value int

EXEC @return_value = [dbo].[TEST_ADD]

SELECT 'Return Value' = @return_value

GO



結論:
這裡寫的是如何寫一個簡單的預存程序,以修改指定資料的日期為例,當然預存程序還有很多東西可以研究,這篇是寫簡單的建立與執行的方式,就先寫到這邊。

arrow
arrow
    文章標籤
    store procedure MSSQL
    全站熱搜

    貓羽 發表在 痞客邦 留言(0) 人氣()