[Oracle] procedura z update'm i zagniezdzonym zapytaniem

0

Witam, od niedawna mam stycznosc z Oraclem i niestety napotkalem na pewien problem ktorego nie potrafie rozwiazac samodzielnie.
Mam nastepujaca procedure:

create or replace procedure P_CVS_LOGS_D(TXT in VARCHAR2) is
LOG_ID NUMBER;
begin
  select cvs_logid_seq.currval into LOG_ID from dual;
  DBMS_OUTPUT.PUT_LINE(LOG_ID);
  update cvs_logs_details set log_details = (select log_details || to_clob(CHR(10)) || to_clob(TXT) from cvs_logs_details where log_id = LOG_ID) where log_id = LOG_ID;
end;

Jej zadanie to doklejenie zmiennej TXT do isteniejacego rekordu. Procedura jest wykorzystywana przy wpisywaniu przez sqlplus dlugich ciagow znakow, co wyglada mniej wiecej tak:

...
gdzies wykonuje wczesniej cvs_logid_seq.nextval
...
insert into cvs_logs_details(log_id, log_details) values (cvs_logid_seq.currval, 'pierwsza linia bardzo dlugiego wpisu');
execute P_CVS_LOGS_D('druga linia bardzo dlugiego wpisu');
...
execute P_CVS_LOGS_D('n-ta linia bardzo dlugiego wpisu');

Niestety przy wykonywaniu procedury otrzymuje blad: ORA-01427: single-row subquery returns more than one row.
Nie wiem co jest tego przyczyna, wartosc LOG_ID, ktora podstawiam pozniej na sztywno w zapytanie update przechodzi bez problemu.

0

Tak wiec sam sobie odpowiem :).
Problemem okazala sie zmienna LOG_ID ktora byla uznawana przez oracle'a jako log_id, czyli nazwa jednego z pol.

1 użytkowników online, w tym zalogowanych: 0, gości: 1