1

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

我对字符串标记化的想法或select owner, object_name from all_objects where owner || '.' || object_name = 'SCHEMA.TABLENAME'看起来都像是 hack。

4

2 回答 2

4

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

此过程调用解析器将给定名称解析为“a [.b [.c]][@dblink]”。它去除双引号,如果没有引号,则转换为大写。它忽略各种评论,并且不进行语义分析。缺失值保留为 NULL。

例如

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

于 2013-10-25T04:07:00.920 回答
1
SELECT SUBSTR('SCHEMA.TABLENAME', 0, INSTR('SCHEMA.TABLENAME', '.') - 1) OWNER,
      SUBSTR('SCHEMA.TABLENAME', INSTR('SCHEMA.TABLENAME', '.') + 1) TABLE_NAME
FROM DUAL
于 2013-10-24T16:49:01.103 回答