我有一个如下的存储过程,在这里我检查了同一个store_code
不能被添加两次的UNIQUE约束。因此,一旦用户插入了名称为abc
的STORE_CODE
。他再次尝试插入具有相同名称的相同store_code。则他应该得到作为Record already exist
的提示。
我试过像下面的SP,但它不提示消息。
PROCEDURE INSERT_INTO_RRSOC_MST
(
P_STORE_CODE IN NVARCHAR2,
P_STATE IN NVARCHAR2,
P_CITY IN NVARCHAR2,
P_Indication IN NUMBER,
TBLDATA OUT NVARCHAR2
)
AS
V_RRSOC_ID NUMBER:=0;
BEGIN
SELECT COUNT(RRSOC_ID) INTO V_RRSOC_ID FROM TBL_RRSOC_STORE_INFO
WHERE STORE_CODE = P_STORE_CODE AND isactive = 'Y';
IF V_RRSOC_ID > 0 AND P_Indication = 1 THEN
UPDATE TBL_RRSOC_STORE_INFO
SET
STATE = P_STATE,
CITY = P_CITY,
WHERE STORE_CODE = P_STORE_CODE;
commit;
ELSE
IF V_RRSOC_ID = 0 AND P_Indication = 0 THEN
INSERT INTO TBL_RRSOC_STORE_INFO
(
STORE_CODE,
STATE,
CITY
)
VALUES
(
P_STORE_CODE,
P_STATE,
P_CITY
)
RETURNING RRSOC_ID INTO TBLDATA;
commit;
TBLDATA:='Record Saved Succesfully';
ELSE
TBLDATA:='Record already exist';
END IF;
END IF;
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
END INSERT_INTO_RRSOC_MST;
1条答案
按热度按时间aiqt4smr1#
目前还不清楚
P_INDICATION
用于什么以及它可以获得哪些值。下面的代码区分不同的
v_rrsoc_id
值,并检查p_indication
中的内容以决定要做什么。也许你不应该在一个过程中提交,但是如果一切正常的话,让调用者去做。此外,在
when others
中回滚将忽略错误,您将不知道发生了什么问题。在这种情况下,您可能需要返回错误消息。[编辑]
现在我们知道了
p_indication
的含义,程序可以大大简化: