我想知道表格中列的数据类型。为此,我调用了ODBC函数SQLColumns。但是对于每个具有“date”类型的列,此函数表示该列是varchar,但事实并非如此。有关数据类型的信息我通过字段“DATA_TYPE”知道它返回类型为-9的int代码,但是这段代码必须是91.有什么问题,请告诉我。
P.S。我用于检索官方页面上有关列标准C ++代码示例的信息。 P.P.S对于其他DBMS,此函数SQLColumns()可正常工作
谢谢!
答案 0 :(得分:0)
您可以运行查询以获取表列信息:
SELECT tbl.name AS tblName,
col.name AS fldName,
typ.name AS Type,
col.length AS length,
col.isnullable AS isnullable,
cmt.text AS DefaultVal
FROM sys.sysobjects tbl
INNER JOIN sys.syscolumns col
ON col.id = tbl.id
INNER JOIN sys.systypes typ
ON typ.xtype = col.xtype
LEFT JOIN sys.sysobjects cnst
ON cnst.xtype = 'D'
AND cnst.parent_obj = tbl.id
AND col.cdefault = cnst.id
LEFT JOIN sys.syscomments cmt
ON cmt.id = cnst.id
WHERE (tbl.xtype = 'U' OR tbl.xtype = 'V')
AND (tbl.name <> N'dtproperties')
AND (tbl.name <> N'sysconstraints')
AND (tbl.name <> N'syssegments')
AND (tbl.name = 'MyTestTable')
ORDER BY tbl.name, col.name
输出:
tblName fldName Type length isnullable DefaultVal
MyTestTable action varchar 10 0 NULL
MyTestTable actionby varchar 100 0 NULL
MyTestTable actiondate datetime 8 0 NULL
MyTestTable colname varchar 50 0 NULL
MyTestTable formfieldname varchar 100 0 NULL
MyTestTable newvalue varchar -1 0 NULL
MyTestTable oldvalue varchar -1 0 NULL
MyTestTable primarykey varchar 100 0 NULL
MyTestTable sequence int 4 0 NULL
答案 1 :(得分:0)
我猜它依赖于你正在使用的ODBC驱动程序。如果它不支持(或请求)2008或更高版本的TDS版本,则类型DATE将正确返回为VARCHAR。