如何使用sql/plsql检查有效的oracle表名

Ren*_*ene 3 oracle

我需要使用sql/plsql检查字符串是否包含有效的Oracle表名.我找到的Oracle表名的标准是:

  1. 表名必须以字母开头.
  2. 表名不能超过30个字符.
  3. 表名必须由字母数字字符或以下特殊字符组成:$,_和#.
  4. 表名不能是保留字.

标准1,2,3似乎并不那么难以解决.但是第4点呢?如果不尝试实际创建具有给定名称的表,然后查看它是成功还是失败,我有哪些选择.

Jim*_*son 7

Oracle有一个内置功能,可用于检查SQL名称是否有效.在构建需要阻止SQL注入的动态查询时,这尤其有用.

查看内置的dbms_assert.simple_sql_name,有关详细信息,请参阅如何编写注入证明PL/SQL的Oracle白皮书.

正如其他人所指出的那样,v $ reserved_words也很有用.


Ian*_*ter 5

对于SQL保留字,您可以检查v $ reserved_words.这里是文档中的链接