【发布时间】:2014-12-03 12:52:26
【问题描述】:
大家好,
我正在开发一个应用程序以在 ORACLE 中从 ASP.NET 执行 SQL 查询,我想获取所有 DDL、DCL、TCL 保留字的列表以防止更改数据库。
也许,¿oracle 中有一个带有这个列表的数据库表?比如 v_$reserved_words。
非常感谢你们的帮助,解决方案必须是正确的,因为我使用具有所有权限的通用用户连接到数据库,而我的公司不允许我更改它。
【问题讨论】:
-
反过来做:维护一个允许语句的列表——这个列表会短得多。顺便说一句:确实有一个
V$RESERVED_WORDS视图,但它不会帮助你,因为它不会告诉你这个保留字属于哪种声明。 -
我建议,您应该通过仅授予使用应用程序所需的权限来控制用户可以执行的操作,而不是检查某些语句。如果他们没有能力执行 ALTER TABLE 语句,那么该语句将失败。这更典型,也更容易。
-
您好,感谢您的帮助,但我如何才能获得此允许的语句?真的,有没有办法知道限制词? :S
-
这不是保护系统的方式。您应该允许调用者发送他们喜欢的任何 SQL; Oracle 中的权限系统是专门设计的 来阻止他们做任何你不希望他们做的事情。不要试图重写轮子。
-
是否允许 DML(
INSERT、UPDATE、MERGE等)和匿名 PL/SQL 块(begin null; end;)?
标签: oracle ddl reserved-words dml