Преобразуйте строку для кодирования в Схеме

Когда вы объявляете курсор для вашего цикла, вы не используете предложение 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;
8
задан Paul Reiners 25 November 2008 в 22:03
поделиться

4 ответа

Схема имеет процедуру read для чтения s-выражений от входного порта и можно преобразовать строку для ввода потока с string->input-port. Так, можно считать объект Схемы из строки с

(read (string->input-port "(1 (0) 1 (0) 0)"))

Мне не установили Схему, таким образом, я только считал ее из ссылки и на самом деле не протестировал ее.

10
ответ дан 5 December 2019 в 09:26
поделиться

Из руководства Схемы PLT:

(open-input-string string [name-v]) создает входной порт, который читает байты из кодировки UTF-8 (см. раздел 1.2.3) строки. Дополнительное name-v аргумент используется в качестве названия возвращенного порта; значение по умолчанию 'string.

5
ответ дан 5 December 2019 в 09:26
поделиться

От этого подобного вопроса на comp.lang.scheme можно сохранить строку в файл, затем считанный из него.

Это могло бы пройти примерно так пример кода:

(let ((my-port (open-output-file "Foo")))
  (display "(1 (0) 1 (0) 0)" my-port)
  (close-output-port my-port))

(let* ((my-port (open-input-file "Foo"))
       (answer (read my-port)))
  (close-input-port my-port)
  answer)
2
ответ дан 5 December 2019 в 09:26
поделиться

Много схем имеют with-input-from-string str thunk это выполняется thunk в контексте, где str стандартный входной порт. Например, в схеме гамбита:

(with-input-from-string "(foo bar)" (lambda () (read)))

оценивает к:

(foo bar)

Лямбда необходима потому что a thunk должна быть процедура, берущая аргументы.

1
ответ дан 5 December 2019 в 09:26
поделиться