如何显示表格的结构

ZDNet软件频道 时间:2003-12-03 作者:ZDNet China |  我要评论()
本文关键词:描述表格 dBASE II
本文将向大家介绍一个dBASE II数据库描述表格的方法--dispstru。用它您可以方便的描述表格的结构。
本文译自Builder.com,未经许可请勿转载

我使用的第一个编程数据库是dBASE II。当时我最喜欢的命令是dispstru,它是显示结构的简写;它用一种方便实用的方式描述了表格的结构。

当我开始使用SQL服务器的时候,让我很心烦的是,我无法很容易地做到同样的事。尽管我可以使用内置的存储过程SP_HELP来描述一个表格,但是它的输出结果却无法很容易地用在别的地方。例如,SP_HELP会进行三次独立的SELECT,而且提供的信息要比我所希望的更多。所以我做了自己的工具,如下所示:

CREATE Procedure DispStru
    (
        @TableNamevarchar(50)
    )

As
    IF EXISTS (SELECT * FROM dbo.sysobjects
        WHERE id = OBJECT_ID(N'[dbo].['+@tableName+']')
            AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
        SELECT
            cols.name as 'Name',
            typs.name as 'Type',
            cols.Length,
            cols.prec as 'Precision',
            cols.Scale,
            Allownulls as 'Allow Nulls'
        FROM syscolumns cols
            INNER JOIN systypestyps ON cols.xusertype=typs.xusertype
        WHERE id = OBJECT_ID(@tableName)
--        ORDER BY name
    ELSE
        PRINT 'No table named '+@tableName + ' in the ' + db_name() + '
Database'

    RETURN

要注意函数OBJECT_ID()和OBJECTPROPERTY()的使用。后者要求其第一个参数是一个能够辨别关注对象的整数。这个值要使用OBJECT_ID()调用才能获得;然后,我们将它以及所关注的属性传递给OBJECTPROPERTY()。

ORDER BY这个述词(predicate)被注释了。我这样做是因为我正在模拟的dispstru命令没有将数据列按名字排序。如果我想要让数据列按字母顺序排列,我只用简单地取消对这一行的注释就行了。

注意:
取决于你想要对输出结果做什么,你可能重新编写这一个过程,将其作为一个用户定义的表格函数。例如这个选择可以让你将多个调用组合起来。

Arthur Fuller开发数据库应用程序已经有20年了。他的专业经验包括Access ADPs、微软SQL 2000、MySQL和.NET。




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134