퇴근5분전


전에 만들어둔게 있었는데....

문제가 조금 있으니 쿼리를 수정함...

이 프로시져는 등록한 데이타 베이스에서만 사용이 가능하다.

전체 DB에서 사용할 수 있는 방법을 찾아봐야겠다.

-- TAG 검색 되게 PRMS, prms

수정 PK , FK ... 정보 출력.

/*   
작성자 : 윤지송    
   
테이블 컬럼의 속성 보는 쿼리!!   
   
   
SqlManagement Studio에 도구 -> 옵션 -> 일반탭 : 키보드    
   
매크로 지정하는 화면에서    
   
키에 exec SP_TABLE_COLUMN_INFO 를 입력해두고...   
   
쿼리실행창에서 보고싶은 테이블이름 셀렉팅 하고 매크로 키를 누르면 프로시져가 실행되어진다.    
   
단, 키등록후 매니져를 껐다 켜야 되드랑!!    
   
*/   
ALTER PROC DBO.SP_TABLE_COLUMN_INFO   
(   
 @TABLENAME nvarchar(776) = NULL   
)   
AS
 
 
 select distinct
  c.object_id , c.name,
   ltrim( rtrim( case when isnull( index_col( @TABLENAME , i.index_id, C.column_id ),'') <> '' then 'PK' else '' end + ' '+
  case when isnull( f.constraint_column_id , '' ) <> '' then 'FK' else '' end )) as [KEY] ,
  isnull(e.value,'') ExName , isnull( t.name ,'') TypeName,   
  c.COLUMN_ID,                
  CONVERT( VARCHAR,  c.NAME ) AS[NAME],               
  UPPER(t.NAME) AS [DTYPE] ,               
  CASE WHEN UPPER(t.NAME) IN ('CHAR','VARCHAR','NVARCHAR','NCHAR','TEXT' )  THEN CASE c.MAX_LENGTH WHEN -1 THEN '(MAX)'    
          ELSE '('+ CONVERT( VARCHAR, c.MAX_LENGTH / ( CASE WHEN LEFT(t.NAME,1) = 'N' THEN 2 ELSE 1 END ) ) +')'     
        END    
   WHEN UPPER(t.NAME) IN ('NUMERIC','DECIMAL' ) THEN '('+ CONVERT(VARCHAR, c.PRECISION) + ',' + CONVERT(VARCHAR, c.SCALE)+')'   
   ELSE ''    
  END AS [LEN],               
  '-- ' + isnull( CONVERT( VARCHAR,  e.VALUE  ) , c.Name ) AS [DESC],               
                
  '@'+CONVERT( VARCHAR,  c.NAME )+' ' + UPPER(t.NAME) +  CASE WHEN UPPER(t.NAME) IN ('CHAR','VARCHAR','NVARCHAR','NCHAR') THEN CASE c.MAX_LENGTH WHEN -1 THEN '(MAX)'    
            ELSE '('+ CONVERT( VARCHAR, c.MAX_LENGTH / ( CASE WHEN LEFT(t.NAME,1) = 'N' THEN 2 ELSE 1 END ) ) +')'    
          END    
           WHEN UPPER(t.NAME) IN ('NUMERIC','DECIMAL' ) THEN '('+ CONVERT(VARCHAR, c.PRECISION) + ',' + CONVERT(VARCHAR, c.SCALE)+')'   
           ELSE ''    
      END +    
   ', -- ' + isnull( CONVERT( VARCHAR,  e.VALUE  ) , '') AS  PROC_PRMS,   
             
  '@'+CONVERT( VARCHAR,  c.NAME + ',' ) AS [PRMS] ,          
          
  'AND'  AS [AND],         
  CONVERT( VARCHAR,  c.NAME + ' = ' ) + '@'+CONVERT( VARCHAR,  c.NAME  ) AS [WPRMS]       
  ,   
  '' as ['        공백         ']   
  ,c.*       
 from sys.columns c left outer join sys.extended_properties e   
 on c.Object_id = e.MAJOR_ID and c.Column_Id = e.Minor_id and e.CLASS = 1   
 left outer join SYS.TYPES t     
 on c.SYSTEM_TYPE_ID = t.SYSTEM_TYPE_ID AND t.NAME <> 'SYSNAME'   
 left outer join sys.index_columns i
 on c.object_id = i.object_id and c.column_id = i.column_id
 left outer join  sys.foreign_key_columns f
 on c.object_id = f.parent_object_id and c.column_id = f.parent_column_id
 where c.Object_id = OBJECT_ID( @TABLENAME )   
 ORDER BY C.column_id
   
SELECT OBJECT_ID(OBJNAME) OBJECT_ID , objtype, objname , name, value 
FROM fn_listextendedproperty (NULL, 'schema', 'dbo', 'table', @TABLENAME, default, default)