Perl syb_在DBD::Sybase中描述

Perl syb_在DBD::Sybase中描述,perl,sybase,Perl,Sybase,我希望为表中的所有列提取Sybase数据类型。当我尝试使用$sth->{TYPE}实现这一点时,我会得到数据类型的数字版本(即,我得到的是0,而不是sybase datatypevarchar) 从DBD::Sybase文档中,我注意到syb_descripe函数的SYBTYPE属性可能能够生成我想要的内容。但我的理解似乎不恰当SYBTYPE也仅以数字形式打印数据类型 有没有办法获取实际Sybase数据类型的文本表示形式(而不是数字)?我找到了一个解决方法(注意:这并不能回答问题): 我所做的只

我希望为表中的所有列提取Sybase数据类型。当我尝试使用
$sth->{TYPE}
实现这一点时,我会得到数据类型的数字版本(即,我得到的是
0
,而不是sybase datatype
varchar

从DBD::Sybase文档中,我注意到
syb_descripe
函数的
SYBTYPE
属性可能能够生成我想要的内容。但我的理解似乎不恰当
SYBTYPE
也仅以数字形式打印数据类型

有没有办法获取实际Sybase数据类型的文本表示形式(而不是数字)?

我找到了一个解决方法(注意:这并不能回答问题):


我所做的只是加入了
sysobjects
systypes
syscolumns
系统表。

听起来您希望对创建表定义进行反向工程。下面是一个可用于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脚本将去掉页眉,添加“createtable my_table_name”,添加逗号,去掉页脚并添加一个“go”


晚安,晚安

现在接受了一些有用的答案。