Как вставить огромные данные в & ldquo; long & rdquo; тип данных в базе данных Oracle с использованием терминала sqlplus?

Основываясь на использовании @mr.spuratic BASH_ENV, здесь I туннель $@ через script -f -c

script -c <command> <logfile> можно использовать для запуска команды внутри другой pty (и группы процессов) но он не может передать какие-либо структурированные аргументы в <command>.

Вместо <command> является простой строкой, которая будет аргументом для вызова библиотеки system.

Мне нужно туннель $@ внешнего bash в $@ of bash, вызванный скриптом.

Поскольку declare -p не может принимать @, здесь я использую магическую переменную bash _ (с фиктивным значением первого массива, которое будет перезаписано bash). Это спасает меня от любых важных переменных:

Доказательство концепции: BASH_ENV=<( declare -a _=("" "$@") && declare -p _ ) bash -c 'set -- "${_[@]:1}" && echo "$@"'

«Но, вы говорите,« вы передаете аргументы в bash - и действительно я , но это простая строка известного символа. Здесь используется script

SHELL=/bin/bash BASH_ENV=<( declare -a _=("" "$@") && declare -p _ && echo 'set -- "${_[@]:1}"') script -f -c 'echo "$@"' /tmp/logfile

, которая дает мне эту функцию-обертку in_pty:

in_pty() { SHELL=/bin/bash BASH_ENV=<( declare -a _=("" "$@") && declare -p _ && echo 'set -- "${_[@]:1}"') script -f -c 'echo "$@"' /tmp/logfile }

или эта обертка без функции в качестве составной строки для Makefiles:

in_pty=bash -c 'SHELL=/bin/bash BASH_ENV=<( declare -a _=("" "$$@") && declare -p _ && echo '"'"'set -- "$${_[@]:1}"'"'"') script -qfc '"'"'"$$@"'"'"' /tmp/logfile' --

...

$(in_pty) test --verbose $@ $^

0
задан user001 18 January 2019 в 09:53
поделиться

1 ответ

Как следует из сообщения об ошибке, вы можете попробовать использовать метод Bind Variables. Если вы не знакомы с ними, они могут быть очень полезны для множества вещей, включая обход ошибки ORA-01704 при использовании SQL * Plus или даже защиту вашей базы данных от потенциальных атак SQL-инъекций.

Вот несколько примеров, которые вы можете использовать:

https://asktom.oracle.com/pls/asktom/f?p=100:11:0: ::: P11_QUESTION_ID: 2320123769177

https://asktom.oracle.com/pls/asktom/asktom.search?tag=pls-00172-string-literal-too-long [ 111]

https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2320123769177

https://oracle-base.com/articles/misc/literals-substitution-variables-and-bind-variables

0
ответ дан cdb_dba 18 January 2019 в 09:53
поделиться
Другие вопросы по тегам:

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