다음은 MSSQL DBA용 프로시저로 테이블 컬럼 정의를 볼 수 있는 프로시저이다.
/************************************************************************************************
-- sp_column0 'dbo.user_t'
-- 해당 테이블의 컬럼을 보여준다
-- 파라미터로는 테이블명을 입력해야 한다.
************************************************************************************************/
USE MASTER
GO
IF OBJECT_ID('sp_column0') IS NOT NULL
DROP PROCEDURE sp_column0
GO
CREATE PROC sp_column0
@table_name VARCHAR(100) = null
AS
SET NOCOUNT ON
DECLARE @errormsg VARCHAR(100)
IF (@table_name IS NULL)
BEGIN
RAISERROR('''@table_name'' parameter is empty...', 16, 1, @table_name)
RETURN(1)
END
IF (CHARINDEX('.',@table_name) = 0)
BEGIN
IF NOT EXISTS (SELECT name
FROM sysobjects
WHERE name = @table_name
AND xtype IN ('s', 'u')
)
BEGIN
SET @errormsg = 'There isn''t ''%s'' table in ' + db_name()+ ' database...'
RAISERROR(@errormsg, 16, 1, @table_name)
RETURN(1)
END
END
ELSE
BEGIN
IF NOT EXISTS (SELECT name
FROM sysobjects
WHERE name = RIGHT(@table_name,LEN(@table_name)
-CHARINDEX('.',@table_name))
AND uid = USER_ID(LEFT(@table_name,LEN(@table_name)
- (LEN(@table_name)-CHARINDEX('.',@table_name)) - 1))
AND xtype IN ('s', 'u')
)
BEGIN
SET @errormsg = 'There isn''t ''%s'' table in ' + db_name()+ ' database...'
RAISERROR(@errormsg, 16, 1, @table_name)
RETURN(1)
END
END
SELECT c.name "col_name", t.name "type", c.length "length", c.isnullable "nullable"
FROM syscolumns c INNER JOIN systypes t
ON c.xusertype = t.xusertype
WHERE c.id = OBJECT_ID(@table_name)
RETURN(0) --sp_column0
SET NOCOUNT OFF
GO
GRANT EXECUTE ON sp_column0 TO PUBLIC
GO
'Programming > MSSQL' 카테고리의 다른 글
MSSQL DB 설정 보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
---|---|
MSSQL 서버 정보 보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
MSSQL 블러킹 및 리스트, BUFFER 데이터 보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
MSSQL 테이블, 뷰 보기 (DBA 관리용 시스템 프로시저) (1) | 2018.04.09 |
MSSQL 파티셔닝으로 DELETE할 때 유의할 점 (0) | 2018.03.19 |