【发布时间】:2014-12-11 13:24:16
【问题描述】:
我正在尝试在 oracle 中编写一个将新数据插入表中的存储过程,但在插入数据之前,我希望它检查客户端是否正在接受可能相互冲突的处理。我一直在尝试应用 IF 语句来使其正常工作,但没有成功,这是我目前拥有的代码:
CREATE OR REPLACE PROCEDURE FPRESC (
FP_ID VARCHAR2,
FTREAT_ID VARCHAR2,
FCLIENT_ID VARCHAR2,
FDOC_ID VARCHAR2)
AS
V_CLIENT_ID PRESCRIPTION.CLIENT_ID%TYPE;
V_CONFLICT TREATMENTS.CONFLICT%TYPE;
BEGIN
IF (FCLIENT_ID = V_CLINET_ID AND FTREAT_ID = V_CONFLICT)
BEGIN
DBMS_OUTPUT.PUT_LINE('CONFLICT');
END;
ELSE
BEGIN
INSERT INTO PRESCRIPTION (P_ID, TREAT_ID, CLIENT_ID, DOC_ID)
VALUES (FP_ID, FTREAT_ID, FCLIENT_ID, FDOC_ID);
END FPRESC;
以及我如何调用该过程的示例:
EXEC FPRESC ('P00011', 'T016', 'C00017', 'D006');
如果我应该改变什么或如何解决这个问题,我将不胜感激。
【问题讨论】:
-
怎么了?是编译失败吗?我看到您在
IF声明的ELSE部分缺少END;它应该在INSERT命令之后。另请注意,您不需要在IF条件周围加上括号,但它们也不会受到伤害 - 在那里根据您的喜好选择。 -
IF条件
THEN语句;这里THEN不见了 -
OP,我格式化了你的查询,所以如果你看清楚,一些结束的 END 语句,然后 if 丢失
-
@Aramillo 不太熟悉触发器的使用
-
@Ed 是的,程序给出了编译错误
标签: sql database oracle stored-procedures