【问题标题】:ORA-00922: missing or invalid option on changing the user passwordORA-00922: 更改用户密码时缺少或无效的选项
【发布时间】:2015-10-02 23:03:51
【问题描述】:

这个 plsql 正在返回错误:

ORA-00922:缺少或无效选项

DECLARE
BEGIN

EXECUTE IMMEDIATE 'ALTER USER upper(:USERNAME) IDENTIFIED BY :NEW_PASSWORD REPLACE :OLD_PASSWORD';

END;

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    ALTER 所属的 DDL 语句不能包含绑定变量 - :USERNAME, :NEW_PASSWORD, :OLD_PASSWORD

    使用

    EXECUTE IMMEDIATE 'ALTER USER ' || upper(:USERNAME) || ' IDENTIFIED BY ' || :NEW_PASSWORD || ' REPLACE ' || :OLD_PASSWORD;
    

    改为。

    【讨论】:

    • 这是受SQL注入的影响。
    • 动态 SQL 总是如此,因此请谨慎使用或更改方法以更安全。
    • @Husqvik,“总是”太强了,实际上削弱了香农的适当警告。只有将用户输入的数据连接到动态 SQL 中,动态 SQL 才容易受到 SQL 注入的攻击。在这种情况下,绝对是危险的。
    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多