Я испытываю ошибку с одной из моих хранимых процедур оракула с ошибкой ORA: 24344 - PullRequest
0 голосов
/ 23 сентября 2019

Я испытываю ошибку с одной из моих хранимых процедур оракула с ошибкой ORA: 24344 при попытке создать хранимую процедуру Я получаю следующее сообщение об ошибке ORA-24344: успех с ошибкой компиляции PL / SQL: ORA-00927:отсутствует знак равенства PL / SQL: оператор SQL игнорируется

CREATE OR REPLACE PROCEDURE sp_comms_update_stg (
ssms_key            IN VARCHAR2,
spolicyNumber       IN VARCHAR2,
sclientKey          IN VARCHAR2,
sclientReference    IN VARCHAR2,
sresult          OUT SYS_REFCURSOR
)
IS
BEGIN

  UPDATE stg_update_email 
  SET
   sms_key := ssms_key, 
  policy_number := spolicyNumber, 
  client_key := sclientKey, 
  process_status := 'Processed'
   WHERE client_reference = sclientReference;

    INSERT INTO EVENTLOG VALUES(seq_eventlog.NEXTVAL, spolicyNumber , (select 
   to_date(sysdate) from dual),
   to_char(sysdate,'HH24:MI:SS'), 101, null, 1, 'Updated stg_update_email', 
   'stg_update_email successfully updated', 'P', var_Client, null, null);


  sresult:= true;

  COMMIT;
 EXCEPTION
     WHEN OTHERS Then
   Rollback;
   sresult := false;
   RAISE_APPLICATION_ERROR (-20000,'ERROR IN EXECUTING PROCEDURE 
SP_UNDEL_UPD_STG - '|| chr(13)||chr(10) || UPPER(SQLERRM) || 
chr(13)||chr(10));
 END;

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

ORA-24344: успех с ошибкой компиляции
PL / SQL: ORA-00927: отсутствует знак равенства
PL / SQL: оператор SQL игнорируется

Это указывалоиз-за того, что вы использовали оператор присваивания PL / SQL := вместо оператора SQL = в вашем операторе обновления.Но вы говорите, несмотря на исправление, что вы все еще не можете скомпилировать свою процедуру.Возможно, просто компилятору не нравится присваивать логическое значение параметру sys_refrcursor, возможно, есть еще кое-что.

Я предлагаю вам выполнить этот запрос, чтобы посмотреть, какие другие ошибки обнаружил компилятор.

select * from user_errors 
where name = 'SP_COMMS_UPDATE_STG'

IDE, такие как Allround Automations PL / SQL Developer и Oracle SQL Developer, сделают это для нас автоматически (в Orcale SQL Developer вам нужно нажать на вкладку Errors ), но это не поможет.вред знать явный запрос.

1 голос
/ 23 сентября 2019

см. Комментарии;решение этих проблем должно привести к компиляции вашей процедуры:

CREATE OR REPLACE PROCEDURE sp_comms_update_stg(
                                                ssms_key            IN     VARCHAR2,
                                                spolicyNumber       IN     VARCHAR2,
                                                sclientKey          IN     VARCHAR2,
                                                sclientReference    IN     VARCHAR2,
                                                sresult                OUT boolean      /* based on your code, you probably need a BOOLEAN */
                                               ) IS
BEGIN
    UPDATE stg_update_email
       SET sms_key           = ssms_key,        /* = and not := */
           policy_number     = spolicyNumber,   /* = and not := */
           client_key        = sclientKey,      /* = and not := */
           process_status    = 'Processed'      /* = and not := */
     WHERE client_reference  = sclientReference;

    INSERT INTO EVENTLOG
         VALUES (
                 seq_eventlog.NEXTVAL,
                 spolicyNumber,
                 sysdate,    --(SELECT TO_DATE(SYSDATE) FROM DUAL),     /* let's simplify! also, to_date(sysdate) makes no sense: sysdate already is a date */
                 /* or even trunc(sysdate) if you don't want time informations*/
                 TO_CHAR(SYSDATE, 'HH24:MI:SS'),
                 101,
                 NULL,
                 1,
                 'Updated stg_update_email',
                 'stg_update_email successfully updated',
                 'P',
                 var_Client,                    /* where is var_Client defined ? */
                 NULL,
                 NULL
                );


    sresult    := TRUE;

    COMMIT;
EXCEPTION
    WHEN OTHERS
    THEN
        ROLLBACK;
        sresult    := FALSE;
        RAISE_APPLICATION_ERROR(-20000, 'ERROR IN EXECUTING PROCEDURE SP_UNDEL_UPD_STG - '
            || CHR(13) || CHR(10) || UPPER(SQLERRM) || CHR(13) || CHR(10));
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...