2016-11-07 58 views
0

我將如何創建一個存儲過程,該存儲過程能夠獲取標記值,如(1,2,3),其中1 =插入,2 =刪除,3 =更新。觸發器的組合過程

因此,例如,如果標誌爲1,則該過程將執行插入,等等。

我知道如何創建存儲過程,並已經制定和測試了我的觸發器,但是我找不到任何這樣的例子,並且不知道從哪裏開始。

謝謝。

+0

提示:'if'看起來這將是有益的。 –

+0

我會爲每個插入,刪除和更新創建三個不同的存儲過程。你會在例如C,C#的Java中創建一個傳統的函數來完成這三個操作嗎?我知道我不會! [關注分離](https://en.wikipedia.org/wiki/Separation_of_concerns)! –

回答

0

我會使用CTE和條件。

爲了給你我的意思的例子:

CREATE OR REPLACE FUNCTION public.test (_flag integer) RETURNS void AS 
$func$ 

WITH delete AS 
(DELETE FROM 
atable 
WHERE 
_flag = 1), 

insert AS 
(INSERT INTO 
atable (acolumn) 
SELECT 
'Hello World' 
WHERE 
_flag = 2) 

UPDATE 
atable 
SET 
acolumn = 'Hello World' 
WHERE 
_flag = 3; 

$func$ 
LANGUAGE sql COST 100 STRICT; 

你會發現每個語句都有自己的標誌檢查的條件。

1

您可以使用正常的,如果else語句:

CREATE PROCEDURE <ProcedureName> (@Flag int) 
AS 
BEGIN 
    IF(@Flag = 1)--INSERT 
    BEGIN 
     <Insert statement> 
    END 
    ELSE IF(@Flag = 2) --DELETE 
    BEGIN 
     <Delete statement> 
    END 
    ELSE IF (@Flag = 3) --UPDATE 
    BEGIN 
     <Update statement> 
    END 
END 
GO