0

テーブル内のすべての列の Sybase データ型を抽出しようとしています。を使用してこれを達成しようとする$sth->{TYPE}と、データ型の数値バージョンが得られます (つまり、sybase datatype の代わりに がvarchar得られます0)。

SYBTYPEDBD::Sybase のドキュメントから、関数の属性syb_describeが探しているものを生成できる可能性があることに気付きました。しかし、私の理解は適切ではないようです。SYBTYPEまた、データ型を数値形式のみで出力します。

(数値ではなく) 実際の Sybase データ型のテキスト表現を取得する方法はありますか?

4

2 に答える 2

1

create table 定義をリバース エンジニアリングしたいようです。これは、Sybase または SQL Server テーブルに使用できる SQL スクリプトです。

select c.name,
        "type(size)"=case
                     when t.name in ("char", "varchar") then
                          t.name + "(" + rtrim(convert(char(3), c.length)) + ")"
                     else t.name
                     end,
       "null"=case
              when convert(bit, (c.status & 8)) = 0 then "NOT NULL"
              else "NULL"
              end
from syscolumns c, systypes t
where c.id = object_id("my_table_name")
and   c.usertype *= t.usertype
order by c.colid
go

注: これを nawk スクリプトで編集して、実際の SQL スキーマ ファイルを作成することもできます。nawk スクリプトは、ヘッダーを取り除き、「create table my_table_name」を追加し、カンマを追加し、フッターを取り除き、「go」を追加します。

良いSQL、おやすみなさい!

于 2012-10-05T23:44:58.570 に答える
0

回避策を見つけました(注:これは質問には答えません):

私がしたことは、sysobjectssystypesおよびsyscolumnsシステム テーブルを単純に結合したことです。

于 2012-07-20T17:37:51.787 に答える