文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» 微软SQL Server专区 » SQL Server应用开发 » 2000用的一个select 语句有点错误,帮忙改一下       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [原创] 2000用的一个select 语句有点错误,帮忙改一下  ( 查看:294  回复:6 )   
 
kerryyu
超级版主  点击可查看详细


内阁大臣   中秋活动勋章  
帖子 155
精华 0
无忧币 1172
积分 492
阅读权限 200
来自 (保密)
注册日期 2007-5-31
最后登录 2008-10-14 离线

[查看资料]  [发短消息]  [Blog
[个人主页]    QQ       
发表于:2008-3-26 11:01   标题:2000用的一个select 语句有点错误,帮忙改一下
上一帖 |
SELECT
                                                    'N/A' AS NAMES_Layer,
                                                    0 AS IS_IDENTITY,
                                                    'N/A' AS SEED_VALUE,
                                                    'N/A' AS INCREMENT_VALUE,
                                                    'N/A' AS COLUMN_NAME,
                                                    'N/A' AS DEFAULT_VALUE,
                                                    'T' AS NAME_KIND,
                                                    name AS NAME_ID,
                                                    'N/A' AS CONSTRAINT_TYPE,
                                                    0 AS ORDINAL_POSITION,
                                                    'N/A' AS COLUMN_DEFAULT,
                                                    'N/A' AS IS_NULLABLE,
                                                    'N/A' AS DATA_TYPE,
                                                    0 AS CHARACTER_MAXIMUM_LENGTH,
                                                    0 AS CHARACTER_OCTET_LENGTH,
                                                    0 AS NUMERIC_PRECISION,
                                                    0 AS NUMERIC_PRECISION_RADIX,
                                                    0 AS NUMERIC_SCALE,
                                                    0 AS DATETIME_PRECISION,
                                                    cast('N/A' as nvarchar(4000)) AS COLLATION_NAME,
                                                    'N/A' AS EXTEND_VALUE,
                                                    crdate AS CREATE_DATA,
                                                    refdate AS ALTER_DATA
                                            FROM
                                                    SYSOBJECTS
                                            WHERE
                                                    xtype = 'U'
                                            UNION all
                                            --视图
                                            SELECT
                                                    VIEW_DEFINITION AS NAMES_Layer,
                                                    0 AS IS_IDENTITY,
                                                    'N/A' AS SEED_VALUE,
                                                    'N/A' AS INCREMENT_VALUE,
                                                    'N/A' AS COLUMN_NAME,
                                                    'N/A' AS DEFAULT_VALUE,
                                                    'V' AS NAME_KIND,
                                                    name AS NAME_ID,
                                                    'N/A' AS CONSTRAINT_TYPE,
                                                    0 AS ORDINAL_POSITION,
                                                    'N/A' AS COLUMN_DEFAULT,
                                                    'N/A' AS IS_NULLABLE,
                                                    'N/A' AS DATA_TYPE,
                                                    0 AS CHARACTER_MAXIMUM_LENGTH,
                                                    0 AS CHARACTER_OCTET_LENGTH,
                                                    0 AS NUMERIC_PRECISION,
                                                    0 AS NUMERIC_PRECISION_RADIX,
                                                    0 AS NUMERIC_SCALE,
                                                    0 AS DATETIME_PRECISION,
                                                    cast('N/A' as nvarchar(4000)) AS COLLATION_NAME,
                                                    'N/A' AS EXTEND_VALUE,
                                                    crdate AS CREATE_DATA,
                                                    refdate AS ALTER_DATA
                                            FROM
                                                    SYSOBJECTS,INFORMATION_SCHEMA.VIEWS
                                            WHERE
                                                    xtype = 'V' AND name = TABLE_NAME
                                            UNION all
                                            --字段及详细类型
                                            SELECT
                                                    (SELECT name FROM sysobjects WHERE ID = c.id) AS NAMES_Layer,
                                                    0 AS IS_IDENTITY,
                                                    CONVERT(VARCHAR,ident_seed(tb.name)) AS SEED_VALUE,
                                                    CONVERT(VARCHAR,ident_incr(tb.name)) AS INCREMENT_VALUE,
                                                    'N/A' AS COLUMN_NAME,
                                                    'N/A' AS DEFAULT_VALUE,
                                                    'F' AS NAME_KIND,
                                                    c.name AS NAME_ID,
                                                    'N/A' AS CONSTRAINT_TYPE,
                                                    c.colid AS ORDINAL_POSITION,
                                                    CAST(p.[value] AS varchar(8000)) AS COLUMN_DEFAULT,
                                                    'N/A' AS IS_NULLABLE,
                                                    t.name AS DATA_TYPE,
                                                    c.length AS CHARACTER_MAXIMUM_LENGTH,
                                                    c.length AS CHARACTER_OCTET_LENGTH,
                                                    c.prec AS NUMERIC_PRECISION,
                                                    0 AS NUMERIC_PRECISION_RADIX,
                                                    c.scale AS NUMERIC_SCALE,
                                                    0 AS DATETIME_PRECISION,
                                                    cast(c.collation as nvarchar(4000)) AS COLLATION_NAME,
                                                    '' AS EXTEND_VALUE,
                                                    getdate() AS CREATE_DATA,
                                                    getdate() AS ALTER_DATA       
                                            FROM
                                                    syscolumns c
                                                    INNER JOIN systypes t ON c.xusertype = t.xusertype
                                                    --INNER JOIN systypes st ON c.xtype = st.xusertype
                                                    --LEFT OUTER JOIN sysobjects d ON d.id = c.cdefault
                                                    --LEFT OUTER JOIN sysusers du ON du.uid = d.uid
                                                    --LEFT OUTER JOIN syscomments cm ON c.cdefault = cm.id
                                                    --LEFT OUTER JOIN syscomments fr ON fr.id = c.id AND fr.number = c.colid
                                                    --LEFT OUTER JOIN sysobjects r ON r.id = c.domain
                                                    --LEFT OUTER JOIN sysusers ru ON ru.uid = r.uid
                                                    INNER JOIN sysobjects tb ON tb.id = c.id
                                                    INNER JOIN sysusers u ON u.uid = tb.uid
                                                    LEFT OUTER JOIN sysproperties p ON p.id = c.id AND p.smallid = c.colid AND p.type = 4 AND p.name = 'MS_Description'
                                            WHERE
                                                    u.name = N'dbo'
                                            UNION all
                                            --主键
                                            SELECT
                                                (select name from sysobjects where id = a.parent_obj) AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,

                                                (SELECT top 1 c.name
                                                FROM
                                                sysindexkeys k
                                                INNER JOIN sysindexes i ON k.id = i.id and k.indid = i.indid
                                                INNER JOIN syscolumns c ON k.id = c.id AND k.colid = c.colid
                                                where i.name = a.name) AS COLUMN_NAME,

                                                'N/A' AS DEFAULT_VALUE,
                                                'K' AS NAME_KIND,
                                                a.name AS NAME_ID,
                                                'PRIMARY KEY' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                'N/A' AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                crdate AS CREATE_DATA,
                                                GETDATE() AS ALTER_DATA       
                                            FROM
                                                sysobjects as a
                                            WHERE
                                                xtype = 'PK'
                                            UNION ALL
                                            --唯一键
                                            SELECT
                                                (select name from sysobjects where id = a.parent_obj) AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,

                                                (SELECT top 1 c.name
                                                FROM
                                                sysindexkeys k
                                                INNER JOIN sysindexes i ON k.id = i.id and k.indid = i.indid
                                                INNER JOIN syscolumns c ON k.id = c.id AND k.colid = c.colid
                                                where i.name = a.name) AS COLUMN_NAME,

                                                'N/A' AS DEFAULT_VALUE,
                                                'K' AS NAME_KIND,
                                                a.name AS NAME_ID,
                                                'UNIQUE' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                'N/A' AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                crdate AS CREATE_DATA,
                                                GETDATE() AS ALTER_DATA       
                                            FROM
                                                sysobjects as a
                                            WHERE
                                                xtype = 'UQ'
                                            UNION ALL
                                            --check约束
                                            SELECT
                                                (select name from sysobjects where id = a.parent_obj) AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                'N/A' AS COLUMN_NAME,
                                                (SELECT TEXT FROM syscomments WHERE ID = a.id) AS DEFAULT_VALUE,
                                                'K' AS NAME_KIND,
                                                a.name AS NAME_ID,
                                                'CHECK' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                'N/A' AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                crdate AS CREATE_DATA,
                                                GETDATE() AS ALTER_DATA       
                                            FROM
                                                sysobjects as a
                                            WHERE
                                                xtype = 'C'
                                            UNION ALL
                                            SELECT
                                                (select name from sysobjects where id = a.parent_obj) AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                ( SELECT c.name
                                                    FROM
                                                    syscolumns c
                                                    LEFT OUTER JOIN sysobjects d ON d.id = c.cdefault
                                                    LEFT OUTER JOIN syscomments cm ON c.cdefault = cm.id
                                                    WHERE d.parent_obj = a.parent_obj and d.name =  a.name)
                                                AS COLUMN_NAME,
                                                ( SELECT cm.text
                                                    FROM
                                                    syscolumns c
                                                    LEFT OUTER JOIN sysobjects d ON d.id = c.cdefault
                                                    LEFT OUTER JOIN syscomments cm ON c.cdefault = cm.id
                                                    WHERE d.parent_obj = a.parent_obj and d.name =  a.name)
                                                AS DEFAULT_VALUE,
                                                'D' AS NAME_KIND,
                                                a.name AS NAME_ID,
                                                'DEFAULT' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                'N/A' AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                crdate AS CREATE_DATA,
                                                GETDATE() AS ALTER_DATA       
                                            FROM
                                                sysobjects as a
                                            WHERE
                                                xtype = 'D'
                                            UNION ALL
                                            --存储过程
                                            SELECT
                                                'N/A' AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                'N/A' AS COLUMN_NAME,
                                                'N/A' AS TEXT,
                                                'P' AS NAME_KIND,
                                                SPECIFIC_NAME AS NAME_ID,
                                                'N/A' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,               
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                cast(ROUTINE_DEFINITION as nvarchar(4000)) AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                CREATED AS CREATE_DATA,
                                                LAST_ALTERED AS ALTER_DATA       
                                            FROM
                                                INFORMATION_SCHEMA.ROUTINES
                                            WHERE
                                                ROUTINE_TYPE = 'PROCEDURE'
                                            UNION ALL
                                            --触发器
                                            SELECT
                                                (SELECT name FROM sysobjects WHERE ID = A.parent_obj) AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                'N/A' AS COLUMN_NAME,
                                                'N/A' AS DEFAULT_VALUE,
                                                'TR' AS NAME_KIND,
                                                A.name AS NAME_ID,
                                                'N/A' AS CONSTARINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                'N/A' AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                getdate() AS CREATE_DATA,
                                                getdate() AS ALTER_DATA
                                            FROM
                                                SYSOBJECTS AS A
                                            WHERE
                                                A.xtype = 'TR'
                                            UNION ALL
                                            --存储过程/函数参数
                                            SELECT
                                                DISTINCT SPECIFIC_NAME AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                'N/A' AS COLUMN_NAME,
                                                'N/A' AS DEFAULT_VALUE,
                                                'PP' AS NAME_KIND,
                                                PARAMETER_NAME AS NAME_ID,
                                                'N/A' AS CONSTARINT_TYPE,
                                                ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                DATA_TYPE,  --collate  排序规则 这里需要加上排序规则否则会报错
                                                CHARACTER_MAXIMUM_LENGTH,
                                                CHARACTER_OCTET_LENGTH,
                                                NUMERIC_PRECISION,
                                                NUMERIC_PRECISION_RADIX,
                                                NUMERIC_SCALE,
                                                DATETIME_PRECISION,
                                                COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                getdate() AS CREATE_DATA,
                                                getdate() AS ALTER_DATA
                                            FROM
                                                INFORMATION_SCHEMA.PARAMETERS
                                            WHERE
                                                PARAMETER_MODE = 'IN'
                                            UNION ALL
                                            --函数
                                            SELECT
                                                'N/A' AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                'N/A' AS COLUMN_NAME,
                                                'N/A' AS DEFAULT_VALUE,
                                                'FC' AS NAME_KIND,
                                                SPECIFIC_NAME AS NAME_ID,
                                                'N/A' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,
                                                0 AS NUMERIC_PRECISION,
                                                0 AS NUMERIC_PRECISION_RADIX,
                                                0 AS NUMERIC_SCALE,
                                                0 AS DATETIME_PRECISION,
                                                --ROUTINE_DEFINITION AS COLLATION_NAME,
                                                cast(ROUTINE_DEFINITION as nvarchar(4000)) AS COLLATION_NAME,
                                                'N/A' AS EXTEND_VALUE,
                                                CREATED AS CREATE_DATA,
                                                LAST_ALTERED AS ALTER_DATA       
                                            FROM
                                                INFORMATION_SCHEMA.ROUTINES
                                            WHERE
                                                ROUTINE_TYPE = 'FUNCTION'
                                            union all
                                            --触发器内容----------
                                            SELECT
                                                (SELECT name FROM sysobjects WHERE  id = o.id) AS NAMES_Layer,
                                                0 AS IS_IDENTITY,
                                                'N/A' AS SEED_VALUE,
                                                'N/A' AS INCREMENT_VALUE,
                                                'N/A' AS COLUMN_NAME,
                                                'N/A' AS DEFAULT_VALUE,
                                                'TR_TEXT' AS NAME_KIND,
                                                o.name AS NAME_ID,
                                                'N/A' AS CONSTRAINT_TYPE,
                                                0 AS ORDINAL_POSITION,
                                                'N/A' AS COLUMN_DEFAULT,
                                                'N/A' AS IS_NULLABLE,
                                                'N/A' AS DATA_TYPE,
                                                0 AS CHARACTER_MAXIMUM_LENGTH,
                                                0 AS CHARACTER_OCTET_LENGTH,