Informix SQL

使用首选连接表示法:

代码语言:javascript复制SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column

FROM "informix".systables AS t

JOIN "informix".syscolumns AS c ON t.tabid = c.tabid

WHERE t.tabtype = 'T'

AND t.tabid >= 100

ORDER BY t.tabname, c.colno;或者是老式的join-in-where子句表示法:

代码语言:javascript复制SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column

FROM "informix".systables AS t, "informix".syscolumns AS c

WHERE t.tabid = c.tabid

AND t.tabtype = 'T'

AND t.tabid >= 100

ORDER BY t.tabname, c.colno;假设您使用的是足够新的IDS版本,您可以按select-list中没有引用的列进行排序。如果您收到投诉,请将排序列添加到选择列表中。

联接标准是显而易见的;tabtype = 'T‘只列出表,而不列出视图、同义词和systables中列出的其他类似项;tabid >= 100只列出在数据库中显式创建的表,而不是系统目录。

这不包括类型信息-如果你想要类型信息,你必须做更多的工作。您将找到一个文件$INFORMIXDIR/etc/xpg4_is.sql,其中包含与旧版本的XPG4 (X/Open标准)信息模式的粗略近似(因此得名)。其中有一些函数等,可以将syscolumns.coltype和syscolumns.collength中的类型信息解码为可识别的字符串。但是,我强烈怀疑它不能处理不同的类型,也不能处理其他用户定义的类型。我很高兴被证明是错的,但是...如果您将该文件的相关部分添加到您的数据库中,那么您也应该能够获得类型信息。

还要注意,ISQL和DB-Access中的所有INFO命令都是在前端模拟的,而不是在IDS服务器中执行的。基本上,程序接受请求并将其转换为更复杂的SQL语句。请参阅文件sqlinfo.ec中的代码,该文件是SQLCMD的一部分(可从IIUG Software Archive获得),了解我的SQLCMD程序如何处理INFO语句。(注意: SQLCMD的INFO输出格式与ISQL和DB-Access的INFO输出不同。)


TOP