먼저 필요한 건 데이터베이스의 정보입니다. 그 정보를 바로 엑셀에서 읽을 수도 있지만 여기선 그냥 복사하는 형태로 하겠습니다.
다음은 데이터베이스의 정보를 가져오는 쿼리입니다.
SELECT
/*프로시저이름*/ SO.name AS [ObjectName],
/*파라미터이름*/ P.name AS [ParameterName],
/*파라메터타입*/
[ParameterDataType] = CASE TYPE_NAME(P.user_type_id)
WHEN 'varchar' THEN 'varchar('+ CAST(P.max_length AS VARCHAR(10)) +')'
WHEN 'char' THEN 'char('+ CAST(P.max_length AS VARCHAR(10)) +')'
ELSE TYPE_NAME(P.user_type_id)
END + ' ' + CASE P.is_output
WHEN 1 THEN 'OUTPUT'
ELSE 'IN'
END
FROM sys.objects AS SO
INNER JOIN sys.parameters AS P
ON SO.OBJECT_ID = P.OBJECT_ID
FROM sys.objects
WHERE TYPE IN ('P'))
ORDER BY
SO.name, P.parameter_id
| ObjectName | ParemeterName | ParemeterDataType | |
| 1 | usp_procedure1 | @param1 | int IN |
| 2 | usp_procedure1 | @param2 | varchar(50) IN |
| 3 | usp_procedure1 | @param3 | int OUTPUT |
| 4 | usp_procedure2 | @param1 | int |
|
이 코드는 표를 그리고 정렬하고 데이터 넣고 하는 VBA코드입니다. 이렇게 만들어지기까지 수많은 시행착오가 있었…(모르게 눈물이)
아무튼 멀찌감치 커서를 놓고 위의 매크로를 실행합니다.
실행 결과는 다음과 같습니다.
표들이 보이시죠?
그것을 복사해서 문서화하면 되는 것 입니다.
여기서 안타까운건 설명컬럼입니다. 설명컬럼은 일일이 그 컬럼에 가서 써야 하지요. 성격상 또 반복 작업스러운건 질색입니다. 그래서 MSSQL에 있는 설명글을 가져와서 붙이고 싶었지만 MSSQL내부의 프로시저에 설명을 작성하지 않아서 일일이 또 작업을 해야만 했습니다.
만약 설명을 틈틈히 프로시저 만들때 하였다면 이 설명까지 가져와 깔끔한 문서를 생성했겠지요.
MSSQL뿐만 아니라 다른 DBMS의 정보를 맨 처음 쿼리 같이 리스트를 뽑는다면 쉽게 문서화 할 수 있겠죠?
프로시저뿐만아니라 테이블 등등…
더이상 문서를 만들진 맙시다. 개발자는 코드로 시크하게 답변해주자고요~
아무튼 뻘짓금지는 계속됩니다.


여기서 말하고 싶은것은 애자일이 가지는 짝프로그래밍입니다. 
















