Если вы знаете, N, количество записей в SAS, которое вам нужно вставить, вы можете выполнить сквозной запрос, чтобы получить N следующих значений из последовательности.
%let N_SEQ_NEEDED = 1000;
Proc SQL;
connect to oracle …;
create table work.sequence_numbers as select * from connection to oracle (
SELECT
ROWNUM n,
THE_NEEDED_SEQUENCE.nextval sequence_value
FROM (
SELECT 1 arbitrary_alias
FROM dual
CONNECT BY LEVEL <= &N_SEQ_NEEDED
)
);
Метод CONNECT BY из http://www.orafaq.com/wiki/Oracle_Row_Generator_Techniques
Не гарантируется последовательная природа N следующих значений вам просто нужно знать, что они уникальны и никогда не повторится в будущем.
Объедините или обновите свой набор данных SAS, назначив полученные значения sequence_values столбцу последовательности в наборе данных, а затем выполните INSERT в Oracle с помощью своего кода SAS.
Это - жесткое ;)
Обычно Вы использовали бы двойных тире, чтобы сказать команде, что она должна прекратить интерпретировать опции, но эхо только произведет их:
$ echo -- -e
-- -e
Можно использовать сам-e для обхождения проблемы:
$ echo -e '\055e'
-e
Кроме того, как другие указали, если Вы не настаиваете на том, чтобы использовать встроенный удар echo
, Ваш /bin/echo
двоичный файл мог бы быть версией GNU инструмента (проверьте страницу справочника), и таким образом поймите POSIXLY_CORRECT
переменная среды:
$ POSIXLY_CORRECT=1 /bin/echo -e
-e
Может быть лучший путь, но это работает:
printf -- "-e\n"
Вы могли обмануть путем выполнения
echo "-e "
Это было бы тире, e, пространством.
Кроме того, можно использовать более сложное, но более точный:
echo -e \\\\x2De
[root@scintia mail]# POSIXLY_CORRECT=1; export POSIXLY_CORRECT [root@scintia mail]# /bin/echo "-e" -e [root@scintia mail]#
Другая альтернатива:
echo x-e | sed 's/^x//'
Это - путь, рекомендуемый autoconf руководством:
[...] часто возможно избежать этой проблемы с помощью 'эхо "x$word"', беря 'x' во внимание позже в канале.
После обращения особого внимания на страницу справочника :)
SYSV3=1 /usr/bin/echo -e
работы, на Солярисе, по крайней мере,
/bin/echo -e
работы, но почему?
[resin@nevada ~]$ which echo
/bin/echo
Единственный верный способ напечатать любую произвольную строку:
printf "%s" "$vars"