user6261443
user6261443

Reputation:

oracle procedure error: Encountered the symbol "procedurename"

I get the following error:

PLS-00103: Encountered the symbol "P_INSERT_STMFRD_REL_RECORDS" when expecting one of the following: if

Anyone a idea what i am missing?

   PROCEDURE p_insert_stmfrd_rel_records(DeployDate DATE, LogNO NUMBER, InstanceNO NUMBER)

   IS

   begin
    IF EXISTS(SELECT 1 FROM ADM_DEPLOYMENTLOGDETAIL WHERE INSTANCENO = InstanceNO AND LOGNO = LogNO AND DEPLOYDATE IS NOT NULL) THEN
      BEGIN 
        UPDATE ADM_DEPLOYMENTLOGDETAIL SET DEPLOYDATE = DeployDate WHERE INSTANCENO = InstanceNO AND LOGNO = LogNO;
      END;  
    ELSE
      BEGIN
        INSERT INTO ADM_DEPLOYMENTLOGDETAIL(
          DEPLOYDATE,
          STATUSID,
          CANCELEDIND,
          INSTANCENO)
        VALUES(
          DeployDate,
          'D',
          'N',
          InstanceNO);
      END;   


END p_insert_stmfrd_rel_records;    <--- Error occurs on this line.

Upvotes: 1

Views: 79

Answers (2)

Gucci
Gucci

Reputation: 931

At the end of any SQL if-block there must be a END IF;

Upvotes: 0

Aleksej
Aleksej

Reputation: 22969

You are missing an END IF.

Also you can not use EXISTS this way; you probably need:

PROCEDURE p_insert_stmfrd_rel_records(
                                      DeployDate     DATE,
                                      LogNO          NUMBER,
                                      InstanceNO     NUMBER
                                     ) IS
    vNum number;
BEGIN
    select count(1)
    into vNum
    FROM ADM_DEPLOYMENTLOGDETAIL
     WHERE     INSTANCENO = InstanceNO
           AND LOGNO = LogNO
           AND DEPLOYDATE IS NOT NULL;
    IF vNum > 0
    THEN
        BEGIN
            UPDATE ADM_DEPLOYMENTLOGDETAIL
               SET DEPLOYDATE    = DeployDate
             WHERE     INSTANCENO = InstanceNO
                   AND LOGNO = LogNO;
        END;
    ELSE
        BEGIN
            INSERT INTO ADM_DEPLOYMENTLOGDETAIL(
                                                DEPLOYDATE,
                                                STATUSID,
                                                CANCELEDIND,
                                                INSTANCENO
                                               )
                 VALUES (
                         DeployDate,
                         'D',
                         'N',
                         InstanceNO
                        );
        END;
    END IF;
END p_insert_stmfrd_rel_records;

Upvotes: 1

Related Questions