2016-11-07 56 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