728x90
ALTER PROC USP_TAB_INFO (
   @DBNAME VARCHAR(100)=''
 , @TABLENAME VARCHAR(100) = ''
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @SQL VARCHAR(4000)
IF @TABLENAME=''
             set @sql='select b.name ColumnName, c.name TypeName, b.length ColumnLength
                                        , Case b.IsNullable when 1 then '''' else ''Not Null'' end Nullable
                                        , Case When g.name is null Then '''' Else ''PK'' End PKwithCidx
                                        , IsNull(d.value,'''') Caption 
                           from '+@DbName+'..sysobjects a
                                        JOIN '+@DbName+'..syscolumns b ON (a.id = b.id and a.type=''U'' and a.status > 0)
                                        JOIN '+@DbName+'..systypes c ON (b.xtype = c.xtype and c.name<>''sysname'')
                                        LEFT JOIN '+@DbName+'..sysproperties d ON  (b.id=d.id and b.colid = d.smallid)
                                        LEFT JOIN (select name,e.id,colid from '+@DbName+'..sysindexes e join '+@DbName+'..sysindexkeys f on e.id=f.id
                                                     where e.id > 10000000 and e.indid=1 and f.indid=1) g ON (g.id=b.id and g.colid=b.colid)
                           order by a.name, colorder'
ELSE
             set @sql='select   b.name ColumnName, c.name TypeName, b.length ColumnLength
                                        , Case b.IsNullable when 1 then '''' else ''Not Null'' end Nullable
                                        , Case When g.name is null Then '''' Else ''PK'' End PKwithCidx
                                        , IsNull(d.value,'''') Caption 
                           from '+@DbName+'..sysobjects a
                                        JOIN '+@DbName+'..syscolumns b ON (a.id = b.id and a.type=''U'' and a.status > 0 and a.name='''+@TableName+''')
                                        JOIN '+@DbName+'..systypes c ON (b.xtype = c.xtype and c.name<>''sysname'')
                                        LEFT JOIN '+@DbName+'..sysproperties d ON  (b.id=d.id and b.colid = d.smallid)
                                        LEFT JOIN (select name,e.id,colid from '+@DbName+'..sysindexes e join '+@DbName+'..sysindexkeys f on e.id=f.id
                                                     where e.id > 10000000 and e.indid=1 and f.indid=1) g ON (g.id=b.id and g.colid=b.colid)
                           order by a.name, colorder'
EXEC(@SQL)
SET NOCOUNT OFF
END
--USE INSIDER
--GO
--EXEC USP_TAB_INFO 'INSIDER', 'INSIDER_1' 

+ Recent posts