Невозможно получить мой цикл для обновления строк со строками

Когда-то очень давно существовали реализации «free ()», которые разбились, когда получили пустой указатель на свободный. Это применимо только к реализациям, которые предваряют стандарт C89 (C90), который не был изменен для решения проблемы с тех пор.

По моему опыту, по существу, ни одна из этих реализаций не оставлена ​​(и не должна есть), поэтому теперь безопасно освобождать нулевые указатели.

Если у вас есть какие-либо требования к порту в чрезвычайно странные и древние системы, то, возможно, вам все равно следует проявлять осторожность. С другой стороны, если бы у вас были такие системы, о которых можно было бы беспокоиться, вы, вероятно, знаете об этой проблеме (и о множестве других проблем), или в коде, который указывает это, будут некоторые общие знания.

0
задан a_horse_with_no_name 18 January 2019 в 10:52
поделиться

2 ответа

Когда вы объявляете курсор для вашего цикла, вы не используете предложение 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;
0
ответ дан Shaun Peterson 18 January 2019 в 10:52
поделиться

Вы можете использовать курсор следующим образом:

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;
0
ответ дан Ali Fidanli 18 January 2019 в 10:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: