최근 포토로그


SP_HELPTEXT 완전 수정판 MSSQL과 ORACLE


알다시피 MS-SQL의 SP_HELPTEXT는 버그가 있다.

황당버그, 라인이 어느정도 늘어나면 자동으로 엔터가 쳐져서 소스가 바뀐다.



이게 사람 죽이는 거다.

수정을 계속하면 할수록, 이게 완전히 원래 소스를 알아볼수 없게 만든다.



그래서 예전에 내가 수정버전을 올린 적이 있었는데, 그것도 약간의 버그가 존재했다.

하지만 지금 버전은 그런거 없다.


자 잘 카피해서 써라

단 sp_helptext는 시스템 프로시저이므로 sp_helptext2 로 만들고 써야 한다.


CREATE PROCEDURE [dbo].[sp_helptext2] (@ProcName NVARCHAR(256))
AS
BEGIN
  DECLARE @PROC_TABLE TABLE (X1  NVARCHAR(MAX))

  DECLARE @Proc NVARCHAR(MAX)
  DECLARE @Procedure NVARCHAR(MAX)
  DECLARE @ProcLines TABLE (PLID INT IDENTITY(1,1), Line NVARCHAR(MAX))

  SELECT @Procedure = 'SELECT DEFINITION FROM '+db_name()+'.SYS.SQL_MODULES WHERE OBJECT_ID = OBJECT_ID('''+@ProcName+''')'

  insert into @PROC_TABLE (X1)
        exec  (@Procedure)

  SELECT @Proc=X1 from @PROC_TABLE

  WHILE CHARINDEX(CHAR(13)+CHAR(10),@Proc) > 0
  BEGIN
        INSERT @ProcLines
        SELECT LEFT(@Proc,CHARINDEX(CHAR(13)+CHAR(10),@Proc)-1)
        SELECT @Proc = SUBSTRING(@Proc,CHARINDEX(CHAR(13)+CHAR(10),@Proc)+2,LEN(@Proc))
  END
 --* inserts last line
 insert @ProcLines 
 select @Proc ;

 --edited here. (where Line<>'')
 SELECT Line FROM @ProcLines where Line<>'' ORDER BY PLID
END




오늘도 외친다.

구글신이시여....




핑백

덧글

댓글 입력 영역