0

すべてのユーザー テーブル、列、データ型、および選択した列のデータ長を表示する select ステートメントを作成したいと考えています。

ASE で既に実行しましたが、IQ のシステム テーブルが異なり、選択を取得するために必要なテーブルを結合できません。ASE では、コードは次のようになります。

select so.name as 'table name', sc.name as 'column name', st.name as 'data type', sc.length as 'data  length'    
from sysobjects so
inner join syscolumns sc on so.id = sc.id
inner join systypes st on sc.usertype = st.usertype
where so.type = 'U' 

を結合キーとして使用しusertypeて必要なものを取得しましたが、IQ ではそのようsyscolumnsystypes結合できません。どうすればそれを実行できるか知っていますか?

4

1 に答える 1

1
select
  t.table_name,
  c.column_name,
  d.domain_name,
  c.width,
  c.scale
FROM SYS.SYSTAB t
JOIN SYS.SYSCOLUMN c
  ON t.table_id = c.table_id
join SYS.SYSDOMAIN d
  on d.domain_id = c.domain_id
where t.creator <> 0 --sysobjects type 'S'
and not exists (select * from sys.systab tv 
                where tv.creator in (2, 22) 
                and tv.table_id = t.table_id) --2/22 sysobjects type 'V'
于 2014-10-08T17:33:28.913 に答える