我需要为视图获取基础SELECT命令,但无法找到可靠的方法,因为数据字典对于某些(至少SYS)视图来说表现得很奇怪。
虽然TEXT_LENGTH值大于0,但很多视图在TEXT(LONG)列中都有NULL值。
奇怪的是,如果我添加WHERE text IS NULL
,则不返回任何行,因此看起来该值实际上不为空。
Oracle版本为12.1.0.2。
HUSQVIK@orcl> SET NULL (null)
HUSQVIK@orcl> SET LONG 32767
HUSQVIK@orcl> SELECT text_length, text FROM dba_views WHERE view_name = 'USER_TAB_COLS_V$';
TEXT_LENGTH TEXT
----------- ----------------------------------------------------------------------------------------------------
8051 (null)
1 row selected.
HUSQVIK@orcl> SELECT text_length, text FROM dba_views WHERE view_name = 'USER_TAB_COLS_V$' AND text IS NULL;
no rows selected
HUSQVIK@orcl>
我知道我可以使用dbms_utility.expand_sql_text
函数(仅限Oracle 12),但我不想扩展使用其他使用X $表的视图的视图,因为只有在以SYS身份登录时才能访问它们。< / p>