Специальные символы Oracle Escape в переменной подстановки - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь написать сценарий SQL для использования в SQL плюс использование переменных подстановки, определенных во время выполнения. Есть ли способ активно избегать появления каких-либо специальных символов?

Например, если переменная содержит ', она немедленно прервет любую строку в скрипте, в которой она выполняется, с

ORA-01756: quoted string not properly terminated

ошибка, так как я не завершил цитату или завершил ее слишком рано. Я просто хочу, чтобы он рассматривал переменную как строку. Есть ли способ сказать Oracle, чтобы просто обрабатывать символы буквально, чтобы установить поле или подобное?

В моем конкретном случае я хочу создать сценарий общего случая, чтобы изменить пароль, запрашивая пароль пользователя, старый и новый.

connect &&myuser/&&oldpass@mydb;
alter user &&myuser identified by &&newpass replace &&oldpass;

Если старый или новый пароль содержит специальные символы, он может сломаться по ряду причин, в том числе из-за проблемы, с которой я столкнулся выше.

1 Ответ

0 голосов
/ 03 ноября 2018

Нет, нельзя экранировать символы в значениях переменных подстановки.

SQL * Plus переменные подстановки (переменные типа CHAR, только другие типы являются числовыми) всегда заменяются дословно . SQL * Plus не обращает внимания на структуру операторов, в которых появляются переменные подстановки: он просто выполняет поиск и замену переменных по их значениям, независимо от того, оставляет ли после этого действительный оператор SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...