在Oracle中拆分所有者和对象名称

时间:2013-10-24 16:30:56

标签: oracle

给定由owner.tablename形式标识的对象;如何拆分所有者和表名?

我对字符串标记化或select owner, object_name from all_objects where owner || '.' || object_name = 'SCHEMA.TABLENAME'的看法都像黑客一样。

2 个答案:

答案 0 :(得分:4)

您可以将DBMS_UTILITY.name_tokenize用于此目的。

  

此过程调用解析器将给定名称解析为“a [。b [。   c]] [@ dblink]“。它会删除双引号,或者如果转换为大写   没有报价。它忽略了各种评论,但没有   语义分析。缺少的值保留为NULL。

e.g。

DBMS_UTILITY.NAME_TOKENIZE
 ( name    => 'SCHEMA.TABLENAME'
 , a       => v_schema
 , b       => v_object_name
 , c       => v_subobject -- ignore
 , dblink  => v_dblink
 , nextpos => v_nextpos -- ignore
 );

http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_util.htm#BJEFIFBJ

答案 1 :(得分:1)

SELECT SUBSTR('SCHEMA.TABLENAME', 0, INSTR('SCHEMA.TABLENAME', '.') - 1) OWNER,
      SUBSTR('SCHEMA.TABLENAME', INSTR('SCHEMA.TABLENAME', '.') + 1) TABLE_NAME
FROM DUAL