您好我有以下存储过程...
CREATE OR REPLACE PROCEDURE DB.INSERTGOOD
(
--CapRefCursor OUT Cap_Cur_Pkg.CapCur,
p_APPLIANT_TLT IN GOODRIGHT_MANUAL.APPLICANT_TLT%TYPE,
p_APPLIANT_NME IN GOODRIGHT_MANUAL.APPLICANT_NME%TYPE,
p_APPLICANT_SURNME IN GOODRIGHT_MANUAL.APPLICANT_SURNME%TYPE,
p_COMPANY_NME IN GOODRIGHT_MANUAL.COMPANY_NME%TYPE,
p_ID_CDE IN GOODRIGHT_MANUAL.ID_CDE%TYPE,
p_ADD1 IN GOODRIGHT_MANUAL.ADD1%TYPE,
p_OCCUPATION1 IN GOODRIGHT_MANUAL.OCCUPATION1%TYPE,
p_REMARK1 IN GOODRIGHT_MANUAL.REMARK1%TYPE,
p_SOURCE IN GOODRIGHT_MANUAL.SOURCE%TYPE
)
IS
BEGIN
INSERT
INTO GOODRIGHT_MANUAL
(
SEQ_ID,
APPLICANT_TLT,
APPLICANT_NME,
APPLICANT_SURNME,
COMPANY_NME,
ID_CDE,
ADD1,
OCCUPATION1,
REMARK1,
GOODRIGHT_MANUAL.SOURCE
)
VALUES
(
goodright_seq.nextval,
p_APPLIANT_TLT,
p_APPLIANT_NME,
p_APPLICANT_SURNME,
p_COMPANY_NME,
lower(p_ID_CDE),
p_ADD1,
p_OCCUPATION1,
p_REMARK1,
p_SOURCE
);
COMMIT;
-- OPEN CapRefCursor FOR
--select 'True';
EXCEPTION
WHEN DUP_VAL_ON_INDEX
THEN ROLLBACK;
-- select 'False';
END DB.INSERTGOOD;
/
这里我想在事务提交成功时返回字符串TRUE,如果事务回滚则返回FALSE。
输出变量CapRefCursor已定义,但我不知道如何为该变量赋值true并返回它。
提前致谢。
答案 0 :(得分:1)
您已定义了一个没有OUT
参数的过程,因此无法返回任何内容。
您可以通过多种方式返回成功信息:
VARCHAR2
返回,例如在你的情况下。OUT
参数。 OUT
参数在逻辑上等效于函数返回值。您可以拥有多个此类参数。我会选择解决方案(3),因为:
EXCEPTION
块,然后让错误传播。最后,通常您不应该在子过程中控制事务逻辑。执行单个插入的过程可能是更大事务的一部分。您不应该让此过程提交或回滚。您的调用代码,无论是PL / SQL,GUI还是脚本,都应该决定事务是否应该继续前进并完成或回滚。