курсорне существует, 34000 |Postgres - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь выполнить приведенный ниже код, но я сталкиваюсь с ошибкой, поскольку курсор v1_cur не существует, 34000 .Может кто-нибудь, пожалуйста, дайте мне знать, где ошибка?

CREATE OR REPLACE FUNCTION data_del(
   OUT p_message_out CHARACTER VARYING,
   OUT p_sqlstate_out CHARACTER VARYING
   )
   RETURNS RECORD AS
$BODY$

DECLARE 
v_msg CHARACTER VARYING(160);
v_sqlstate CHARACTER VARYING(6);
v1_cur RECORD;
c1_cur CURSOR FOR SELECT * FROM mydata WHERE event_timestamp<=CURRENT_TIMESTAMP - INTERVAL '15 Days';

BEGIN
OPEN c1_cur;
LOOP
FETCH c1_cur INTO v1_cur;
EXIT WHEN NOT FOUND;
DELETE FROM mydata WHERE CURRENT OF v1_cur;
END LOOP;
CLOSE c1_cur;

v_msg = 'Data deleted successfully.';
v_sqlstate = 1; 

p_message_out = v_msg;
p_sqlstate_out = v_sqlstate;


EXCEPTION WHEN OTHERS THEN
p_message_out=SQLERRM;
p_sqlstate_out=SQLSTATE;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER

1 Ответ

0 голосов
/ 27 августа 2018

CURRENT OF должно сопровождаться именем курсора (c1_cur), а не записью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...