在Oracle中描述查询结果的模式?

Chr*_*her 4 sql oracle ddl describe

是否有可能获得与Oracle DESCRIBE命令类似的查询结果?例如,我在几个表之间建立了一个联接,并限制了返回的列,我想将其写到文件中。稍后,我想将该文件中的值还原到另一个DBMS中自己的基表中。

我可以单独描述所有表,并手动修剪列,但是我希望DESC (select a,b from t1 join t2) as q可以使用,但不能。

如果我没有create view特权(我没有特权),则无法创建视图。没有办法直接描述查询结果吗?

A B*_*A B 6

如果您计划重复使用该查询,则为其创建视图可能是有意义的。
您可以像对表进行评论一样对数据库视图进行评论:

create view TEST_VIEW as select 'TEST' COL1 from dual;
comment on table TEST_VIEW IS 'TEST ONLY';
Run Code Online (Sandbox Code Playgroud)

要查找视图上的评论,请执行以下命令:

select * from user_tab_comments where table_name='TEST_VIEW';
Run Code Online (Sandbox Code Playgroud)

参考:

如何为 oracle 数据库视图创建注释

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:233014204543

注意:此 URL 声明 SQLPLUS DESCRIBE 命令仅应与“表、视图或同义词”或“函数或过程”一起使用。这意味着 DESCRIBE 的目标必须是现有的数据库对象。

http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12019.htm

作为 SQLPLUS 命令,DESCRIBE 无法动态解析 SQL 语句。DESCRIBE 返回的所有信息都存储在数据字典中。


Jus*_*ave 5

如果您有一个查询,表示要从一个数据库中提取并加载到另一个数据库中的一组数据,那么在源数据库中为该查询创建视图似乎非常明智。一旦有了该视图,就可以describe从各种数据字典表中查看或提取正在寻找的信息。

而且我认为,有充分的理由倾向于使用一种基于文件的自定义解决方案,而不是Oracle提供的用于处理数据复制的任何技术将数据从一个数据库复制到另一个数据库。与编写自己的视图相比,物化视图,Streams,GoldenGate等通常都是更好的解决方案。

如果不允许在源数据库上创建对象,则不能使用SQL * Plus describe命令。您可以编写一个匿名的PL / SQL块,该块使用该dbms_sql包来解析和描述动态SQL语句。这将比使用describe命令复杂得多,您将必须弄清楚如何格式化输出。我将以这个describe_columns示例为起点。