替代变量中的Oracle Escape特殊字符

时间:2018-11-02 22:14:32

标签: oracle plsql

我正在尝试编写一个SQL脚本以供在SQL中使用,以及使用在运行时定义的替换变量。有没有办法主动转义任何进入的特殊字符?

例如,如果变量中包含一个',它将立即中断脚本中以a开头的行。

ORA-01756: quoted string not properly terminated

错误,因为我没有完成报价或过早完成报价。我只希望它将变量视为字符串。有没有办法告诉Oracle只是按字面意义对待字符以设置字段或类似字符?

在我的特定情况下,我想制作一个一般情况脚本以通过提示用户输入旧密码和新密码来更改密码。

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

如果旧密码或新密码包含特殊字符,则由于多种原因,包括我上面提到的问题,它可能会破解。

1 个答案:

答案 0 :(得分:0)

否,没有办法在替换变量值中转义字符。

SQL * Plus替代变量(类型为CHAR的变量,其他唯一类型为数字)are always substituted verbatim。 SQL * Plus不关注出现替换变量的语句的结构:它只是对变量及其值进行搜索和替换,而不管其后是否留下有效的SQL语句。