Когда-то очень давно существовали реализации «free ()», которые разбились, когда получили пустой указатель на свободный. Это применимо только к реализациям, которые предваряют стандарт C89 (C90), который не был изменен для решения проблемы с тех пор.
По моему опыту, по существу, ни одна из этих реализаций не оставлена (и не должна есть), поэтому теперь безопасно освобождать нулевые указатели.
Если у вас есть какие-либо требования к порту в чрезвычайно странные и древние системы, то, возможно, вам все равно следует проявлять осторожность. С другой стороны, если бы у вас были такие системы, о которых можно было бы беспокоиться, вы, вероятно, знаете об этой проблеме (и о множестве других проблем), или в коде, который указывает это, будут некоторые общие знания.
Когда вы объявляете курсор для вашего цикла, вы не используете предложение into.
Если вы действительно хотите поместить их в переменные, вы можете выполнить присваивание в цикле следующим образом ...
v_site := item.site;
В противном случае просто используйте переменную элемента, которую вы объявили в своем цикле, как показано ниже
SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
n_counter NUMBER := 0;
BEGIN
FOR item IN (
SELECT
s.site
,s.client
,p.name_comment
,s.identification
,to_char(s.last_print, 'DD/MM/RRRR HH24:MM:SS')
FROM
is_spool_dir s
,is_prints_name p
WHERE
to_char(s.last_print, 'DD/MM/YYYY') like '18/01/2019'
and s.site = '7'
and s.client = 'BREV'
and s.identification like 'BREZ%'
and p.id = s.report_id
ORDER BY
to_char(s.last_print, 'DD/MM/YYYY'))
LOOP
n_counter := n_counter + 1;
DBMS_OUTPUT.PUT_LINE(n_counter);
DBMS_OUTPUT.PUT_LINE(item.v_site ||','|| item.v_client ||','|| item.v_name ||','|| item.v_id ||','|| item.v_date);
IF n_counter = 1000 THEN
EXIT;
END IF;
END LOOP;
END;
Вы можете использовать курсор следующим образом:
FOR CUR IN ( SELECT
s.site
,s.client
,p.name_comment
,s.identification
,to_char(s.last_print, 'DD/MM/RRRR HH24:MM:SS')
FROM
is_spool_dir s
,is_prints_name p
WHERE
to_char(s.last_print, 'DD/MM/YYYY') like '18/01/2019'
and s.site = '7'
and s.client = 'BREV'
and s.identification like 'BREZ%'
and p.id = s.report_id
ORDER BY
to_char(s.last_print, 'DD/MM/YYYY'))
LOOP
NULL;
--use CUR.site HERE FOR YOUR OPERATIONS ...
END LOOP;