0

列 TNAME、CNAME、DTYPE、COLCOMMENT を持つテーブル TABLE_INFO があります。Oracle SQL Developer で SQL スクリプトを作成する必要があります。これにより、列 TNAME からテーブル名、CNAME から列、DTYPE から列のデータ型、COLCOMMENT から列コメントを持つ新しいテーブルが作成されます。これどうやってするの?

たとえば、テーブル TABLE_INFO には次のデータがあります。

|TNAME | CNAME | DTYPE | コメント |

1|従業員 | 従業員 ID | 番号 | 従業員ID |

2|従業員 | Emp_Nm| VARCHAR | 従業員名 |

3|ジョブ | ジョブ ID | 番号 | ジョブ ID | 等

次のような多くの CREATE TABLE ステートメントを記述する必要があります。

CREATE TABLE EMLOYEE (EMP ID NUMBER, Emp_Nm VARCHAR)

COMMENT ON COLUMN EMP_ID is ''Employee ID''

COMMENT ON COLUMN EMP_NM is ''Employee NAME''

TNAMEごとに

4

3 に答える 3

0

別の解決策を見つけました

CREATE OR REPLACE

PROCEDURE CREATEFROMTABLE AS

BEGIN

    for j in (select DISTINCT tname from t_info) loop `

    dbms_output.put_line('create table '|| j.tname || ' as (');`

                for col in (select CNAME, dtype from T_INFO where tname = j.tname) 
                loop
                        dbms_output.put_line(col.cname|| '   ' || col.dtype);
                end loop;

               dbms_output.put_line(')');`

               dbms_output.put_line('');`

                for col in (select cname, dcmt from T_INFO where tname = j.tname) `

                loop`

                    dbms_output.put_line('COMMENT ON COLUMN '|| col.cname || ' is ' || col.dcmt || ' ');`

               end loop;    `

    `dbms_output.put_line(' ');`

    `end loop;`

END CREATEFROMTABLE;

t_info は、列 tname、cname、dcmt を持つメイン テーブルです。

tname は新しいテーブル名です

cname は列名です

dcmt は列のコメントです

于 2012-11-16T10:33:08.070 に答える
0

これを試して。

SELECT T1.TABLE_NAME
      ,T1.COLUMN_NAME
      ,T1.DATA_TYPE
      ,T2.COMMENTS
  FROM ALL_TAB_COLS T1
      ,ALL_COL_COMMENTS T2
 WHERE T1.OWNER = T2.OWNER
   AND T1.TABLE_NAME = T2.TABLE_NAME
   AND T1.COLUMN_NAME = T2.COLUMN_NAME

アクセス可能なすべてのテーブル情報を取得します。

DBA テーブルを含めるには、DBA_TAB_COLSandDBA_COL_COMMENTSの代わりにALL_TAB_COLSand をALL_COL_COMMENTSそれぞれ使用します。

そのクエリにさらに条件を与えることもできます。

これを挿入するには、

INSERT INTO TABLE_INFO (
                TNAME
               ,CNAME
               ,DTYPE
               ,COLCOMMENT)
    SELECT T1.TABLE_NAME
          ,T1.COLUMN_NAME
          ,T1.DATA_TYPE
          ,T2.COMMENTS
      FROM ALL_TAB_COLS T1
          ,ALL_COL_COMMENTS T2
     WHERE T1.OWNER = T2.OWNER
       AND T1.TABLE_NAME = T2.TABLE_NAME
       AND T1.COLUMN_NAME = T2.COLUMN_NAME   
于 2012-11-16T07:42:38.463 に答える