表名和循环描述

发布于 2024-09-06 04:54:05 字数 122 浏览 2 评论 0原文

在 Oracle 10g 中工作。列出所有表名称的简单方法(从 dba_tables 中选择 table_name,其中所有者 = 'me') 但是现在我有了表名,是否有一种简单的方法可以循环遍历它们并按顺序对每个表进行“描述”?

Working in Oracle 10g. Easy way to list all tables names (select table_name from dba_tables where owner = 'me')
But now that I have the table names, is there an easy way to loop through them and do a 'describe' on each one in sequence?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

反目相谮 2024-09-13 04:54:06

我建议按照 N. Gasparotto 的建议查询 dba_tab_columns,但如果您确实想要描述输出,则使用以下内容创建一个文件 mulit-describe.sql:

set pagesize 0
set termout off
set feedback off
set verify off

spool mdtmp.sql
select 'describe ' || owner || '.' || table_name
from dba_tables
where OWNER = upper('&1')
/

spool off
set termout on
@mdtmp.sql

在 SQL*PLUS 中运行:

@multi-describe ME

I'd recommend querying dba_tab_columns, as N. Gasparotto suggested, but if you really want describe output then create a file mulit-describe.sql with the following:

set pagesize 0
set termout off
set feedback off
set verify off

spool mdtmp.sql
select 'describe ' || owner || '.' || table_name
from dba_tables
where OWNER = upper('&1')
/

spool off
set termout on
@mdtmp.sql

Within SQL*PLUS run by:

@multi-describe ME
执手闯天涯 2024-09-13 04:54:05

您可以查询 DBA_TAB_COLUMNS(或 USER_TAB_COLUMNS)。

尼古拉斯.

You could query against DBA_TAB_COLUMNS (or USER_TAB_COLUMNS).

Nicolas.

情域 2024-09-13 04:54:05

不确定您是否可以从 PL/SQL 中进行描述。我刚刚尝试使用立即执行'describe some_table',但这也不起作用。您的下一个选择是查询 DBA_TAB_COLUMNS,或者使用所有描述语句创建一个新文件(使用 pl/sql 和 spool 中的 dbms_output 来创建文件),然后执行该文件。也许是这样的:

spool temp_file.sql
BEGIN
    /*or you could have a loop here with as many put_lines as you need, it will all end up in the new script file.*/
    dbms_output.put_line('describe some_table');
END;
/
spool off
@temp_file.sql
/*I have not actually tried running this code, beware syntax errors!*/

Not sure you can do a describe from within PL/SQL. I just tried using execute immediate 'describe some_table', that doesn't work either. Your next choice would be to query DBA_TAB_COLUMNS, or create a new file with all your describe statements (using dbms_output from pl/sql and spool to create the file) and then execute that file. Maybe like this:

spool temp_file.sql
BEGIN
    /*or you could have a loop here with as many put_lines as you need, it will all end up in the new script file.*/
    dbms_output.put_line('describe some_table');
END;
/
spool off
@temp_file.sql
/*I have not actually tried running this code, beware syntax errors!*/
窝囊感情。 2024-09-13 04:54:05

您可以使用 DBMS_METADATA 在 PL/SQL 中执行此操作.GET_DDL,例如(来自文档的示例):

SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;

You can do this in PL/SQL using DBMS_METADATA.GET_DDL, e.g. (example taken from docs):

SET LONG 2000000
SET PAGESIZE 0
SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;
尘曦 2024-09-13 04:54:05
  1. 使用用户登录,然后运行以下命令,第一个文件将包含描述命令,第二个文件将是所需的文件,其中包含登录用户的所有表的所有描述

    spool desctables.sql
    选择'描述'||表名||';'来自用户表;
    脱机
    假脱机 alltables.txt
    @desctables.sql
    脱机
    
  1. login with the user and then run the following commands, first file will contain the describe commands and the second file will be the desired file containing all the descriptions of all tables for logged in user

    spool desctables.sql
    select 'describe '||table_name||';' from user_tables;
    spool off
    spool alltables.txt
    @desctables.sql
    spool off
    
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文