oracle对字段合法性校验,验证Oracle列名称

本文介绍了在Oracle中如何使用DBMS_ASSERT.SIMPLE_SQL_NAME()函数进行字段合法性校验,以及为何该函数不足以完全防止保留字冲突。文章提到,对于完全验证列名称,可能需要结合检查V$RESERVED_WORDS视图,以确保不包含保留关键字。此外,讨论了在处理来自外部源的数据并推送到Oracle表时,应如何制定文件格式标准和考虑使用SQL*Loader或外部表。
摘要由CSDN通过智能技术生成

” is there any build in function which can do a more extensive check.”

Oracle具有DBMS_ASSERT.SIMPLE_SQL_NAME()函数.如果符合Oracle命名规则,则返回传递的名称…

select dbms_assert.simple_sql_name('VALID_NAME') from dual;

…如果名称无效,请投掷ORA-44003.

有效名称允许任何字符,如果名称是双引号(yuck,但那么就是创建“临时表”).此功能也不会检查名称的长度,因此您仍需要自己验证.

Find out more in the docs.

这里也是a SQL Fiddle.

“creating a table with comment column is not possible as its a invalid identifier”

有道理. DBMS_ASSERT主要用于防止SQL注入.因此,它验证值是否符合Oracle的命名规则,而不是该值是有效的Oracle名称.为了捕捉注释之类的内容,你还需要检查V$RESERVED_WORDS的值,可能是保留!=’Y’.由于这是一个V $视图,因此默认情况下不会授予它;如果您无法访问,则需要请求友好的DBA提供帮助.

” For validating column names I believe I should check with the entire list”

由你决定.区别在于某些关键字可以合法地用作标识符.例如,当TYPE引入对象关系的东西时,它只成为Oracle版本8中的保留字.但是现有系统中有很多表和视图使用’TYPE’作为列名(尤其是Oracle数据字典).如果Oracle使TYPE成为一个适当保留的单词,那么它将破坏所有这些系统.因此,不能用作标识符的保留字列表是所有Oracle关键字的子集.

关于一般任务的意见:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值