SQL Server OUTPUT指令
OUTPUT用在新、刪、改等資料處理動作中
可以即時得知剛剛操作動作的結果
配合inserted、deleted二個暫存表
除了顯示基本資料狀態,還可以將
顯示出來的狀態另存到別張表中
可以即時得知剛剛操作動作的結果
配合inserted、deleted二個暫存表
除了顯示基本資料狀態,還可以將
顯示出來的狀態另存到別張表中
--OUTPUT用法
--基本用法,顯示剛剛INSERT 的結果-------------------------------
INSERT INTO 匠匠
OUTPUT inserted.*
VALUES(27,'蛋塔',35)
--基本用法,顯示剛剛DELETE 的結果-------------------------------
DELETE 匠匠
OUTPUT deleted.*
WHERE 產品編號 = 27
--基本用法,顯示剛剛UPDATE 的結果-------------------------------
DELETE
UPDATE 匠匠
SET 價錢 =38
OUTPUT inserted.價錢 AS 新價 ,deleted.價錢 AS 舊價
,inserted.價錢 - deleted.價錢 AS 價差
WHERE 產品編號 = 27
-----------------------------------------------------------
--可以建一張表,再配合STORED PROCEDURE另存異動紀錄---------------
CREATE TABLE 匠匠追蹤
(
產品編號 INT,
新品名 NVARCHAR(5),
舊品名 NVARCHAR(5),
新價錢 MONEY,
舊價錢 MONEY,
異動狀態 NVARCHAR(8),
帳號 VARCHAR(200) DEFAULT SUSER_SNAME(),
時間 DATETIME DEFAULT GETDATE()
)
GO
--建立新增追蹤PROCEDURE---
CREATE PROC 匠匠新增 @id INT,@name NVARCHAR(5),@price MONEY
AS
INSERT INTO 匠匠
OUTPUT inserted.產品編號,inserted.品名,inserted.價錢,'新增產品'
INTO 匠匠追蹤(產品編號,新品名,新價錢,異動狀態)
VALUES(@id,@name,@price)
GO
--建立刪除追蹤PROCEDURE---
CREATE PROC 匠匠刪除 @id INT
AS
DELETE 匠匠
OUTPUT deleted.產品編號,deleted.品名,deleted.價錢,'刪除產品'
INTO 匠匠追蹤(產品編號,舊品名,舊價錢,異動狀態)
WHERE 產品編號 = @id
GO
--建立更新追蹤PROCEDURE---
CREATE PROC 匠匠異動 @id INT,@name NVARCHAR(5),@price MONEY
AS
UPDATE 匠匠
SET 價錢 =@price,品名 = @name
OUTPUT inserted.品名,inserted.價錢,
deleted.品名,deleted.價錢,'更新產品'
INTO 匠匠追蹤(新品名,新價錢,舊品名,舊價錢,異動狀態)
WHERE 產品編號 = @id
GO
SELECT * FROM 匠匠追蹤
--當程式人員有需要資料異動,只要呼叫PROCEDURE即可---------
EXEC 匠匠新增 26,'茶葉蛋',8
EXEC 匠匠異動 26,'大茶葉蛋',18
EXEC 匠匠刪除 26

留言
張貼留言