※ 이 내용은 MS-SQL 2008 버전 이상에서 사용이 가능하다.
1. 데이터 유형 hierarchyid 를 이용한 계층구조 테이블 생성
CREATE TABLE TBB_CODE
(
OrgNode hierarchyid PRIMARY KEY CLUSTERED,
OrgLevel AS OrgNode.GetLevel(),
[BASE_CD] [varchar](50) NOT NULL,
[CD_GRP] [varchar](50) NULL,
[CD_NAME] [varchar](255) NULL,
[CD_ENAME] [varchar](255) NULL,
[DVALUE] [decimal](38, 10) NULL,
[SVALUE] [varchar](255) NULL,
[DESC] [varchar](1024) NULL,
[ORDER] [int] NULL,
[YN] [char](1) NULL DEFAULT ('N'),
[YN_DATE] [datetime] NULL,
[REG_DATE] [datetime] NULL DEFAULT (getdate()),
[CDATE] [datetime] NULL DEFAULT (getdate())
) ;
2. 데이터 추가 프로시져
/****** Object: StoredProcedure [dbo].[SP_CODE_ADD] Script Date: 2015-03-21 오후 12:08:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: jwcho
-- Create date: 2015.03.20
-- Modify date: 2015.03.20
-- Description: 기본코드 정보를 검색한다.
-- 주의사항: 소속그룹이 없이 기본코드 또는 명칭을 검색하면 이 프로시져를 사용하여 검색하는 것이 단순검색하는 것보다 많이 느리다.
-- SP_CODE_ADD '_ROOT_', 'BS0001', '재료분류','Material category',NULL,NULL,'재료 관련정보의 최상위 그룹'
-- SP_CODE_ADD 'BS0001', 'BS00010001', '공통(노임)',NULL,NULL,'','▣ 공통(노임)'
-- SP_CODE_ADD 'BS00010001', 'BS000100010001', '노임',NULL,NULL,'','★ 노임'
-- SP_CODE_ADD '_ROOT_', 'CONC', '콘크리트','CONCRETE',NULL,'','콘크리트 관련정보의 최상위 그룹'
-- SP_CODE_ADD 'CONC', 'CONC001', '콘크리트 강도 목록','CONCRETE STRENGTH',NULL,'','콘크리트 강도의 종류에 대한 목록'
-- SP_CODE_ADD 'CONC001', 'CONC001001', '콘크리트 강도 목록',NULL,NULL,NULL,NULL
-- SP_CODE_ADD 'AL001','AL001001','SLIDING',NULL,NULL,NULL,'__SLIDING'
-- SP_CODE_ADD 'BS000100360001','BS0001003600030014', '적재', NULL, NULL, NULL, '☞적재'
-- =============================================
ALTER PROCEDURE [dbo].[SP_CODE_ADD]
@V_GROUP VARCHAR(50), -- 소속그룹 ID
@V_CODE VARCHAR(50), -- 코드
@V_KNAME VARCHAR(255)=NULL, -- 한글명칭
@V_ENAME VARCHAR(255)=NULL, -- 영문명칭
@V_DVALUE DECIMAL(38,10)=NULL, -- 숫자형 값
@V_SVALUE VARCHAR(255)=NULL, -- 문자형 값
@V_DESC VARCHAR(1024)=NULL -- 설명
AS
BEGIN
SET NOCOUNT ON;
--CREATE TABLE #RetTable
--(
-- [RetVal] INT NULL
-- ,[MSG] VARCHAR(1024) NULL
-- ,[GROUP] VARCHAR(50) NULL
-- ,[CODE] VARCHAR(50) NULL
-- ,[KNAME] VARCHAR(50) NULL
-- )
IF @V_GROUP IS NULL OR LEN(@V_GROUP) < 1
OR @V_CODE IS NULL OR LEN(@V_CODE) < 1
BEGIN
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (-1, '코드가 올바르지 않습니다.', @V_GROUP, @V_CODE, @V_KNAME);
SELECT -1 'RetVal', '코드가 올바르지 않습니다.' 'MSG', @V_GROUP '[GROUP]', @V_CODE '[CODE]', @V_KNAME 'KNAME';
RETURN
END
IF NOT EXISTS(SELECT BASE_CD FROM TBB_CODE WHERE BASE_CD='_ROOT_')
INSERT TBB_CODE (OrgNode, [BASE_CD], [CD_GRP],[CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC])
VALUES (HIERARCHYID::GetRoot(), '_ROOT_', NULL, '_ROOT_','_ROOT_',NULL,'','_ROOT_') ;
IF EXISTS(SELECT BASE_CD FROM TBB_CODE WHERE BASE_CD=@V_CODE)
BEGIN TRY
EXECUTE dbo.SP_CODE_DELETE @V_CODE, 0;
END TRY
BEGIN CATCH
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (0, CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE(), @V_GROUP, @V_CODE, @V_KNAME);
--SELECT 0 'RetVal', CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE() 'Message', @V_GROUP '[GROUP]', @V_CODE 'CODE', @V_KNAME 'KNAME';
END CATCH
DECLARE @OrgNode HIERARCHYID;
DECLARE @LAST_CHILD HIERARCHYID;
SELECT @OrgNode = OrgNode
FROM TBB_CODE
WHERE [BASE_CD] = @V_GROUP;
--print @V_GROUP + ', ' + @V_CODE + ' ' + @OrgNode.ToString();
IF @OrgNode IS NOT NULL AND LEN(@OrgNode.ToString()) > 0
BEGIN
SELECT @LAST_CHILD = MAX(OrgNode)
FROM TBB_CODE
WHERE OrgNode.GetAncestor(1) = @OrgNode;
--print 'Last Child ID: ' + @LAST_CHILD.ToString();
IF (@LAST_CHILD IS NOT NULL AND LEN(@LAST_CHILD.ToString()) > 0)
AND (@V_GROUP <> '_ROOT_')
BEGIN
--print CHAR(3) + '하부 데이터 추가' + CHAR(3);
DECLARE @LAST_CHILD2 HIERARCHYID;
SELECT @LAST_CHILD2 = MAX(OrgNode)
FROM TBB_CODE
WHERE OrgNode.GetAncestor(1) = @LAST_CHILD;
--print 'Last Child2 ID: ' + @LAST_CHILD2.ToString();
BEGIN TRY
INSERT TBB_CODE (OrgNode, [BASE_CD], [CD_GRP],[CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC])
VALUES (@LAST_CHILD.GetDescendant(@LAST_CHILD2, NULL), @V_CODE, @V_GROUP, @V_KNAME,@V_ENAME,@V_DVALUE,@V_SVALUE,@V_DESC);
END TRY
BEGIN CATCH
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (0, CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE(), @V_GROUP, @V_CODE, @V_KNAME);
SELECT 0 'RetVal', CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE() 'Message', @V_GROUP '[GROUP]', @V_CODE 'CODE', @V_KNAME 'KNAME';
END CATCH
END
ELSE
BEGIN
--print CHAR(3) + '상위 데이터 추가' + CHAR(3);
IF (@LAST_CHILD IS NOT NULL AND LEN(@LAST_CHILD.ToString()) > 0)
BEGIN
BEGIN TRY
INSERT TBB_CODE (OrgNode, [BASE_CD], [CD_GRP],[CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC])
VALUES (@OrgNode.GetDescendant(@LAST_CHILD, NULL), @V_CODE, @V_GROUP, @V_KNAME,@V_ENAME,@V_DVALUE,@V_SVALUE,@V_DESC);
END TRY
BEGIN CATCH
--print 'ErrorNumber:'+convert(varchar,ERROR_NUMBER())+ 'ErrorMessage:'+ERROR_MESSAGE() + ',' + @V_GROUP + ',' + @V_CODE + ',' + @V_KNAME + CHAR(13);
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (0, CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE(), @V_GROUP, @V_CODE, @V_KNAME);
SELECT 0 'RetVal', CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE() 'Message', @V_GROUP '[GROUP]', @V_CODE 'CODE', @V_KNAME 'KNAME';
END CATCH
END
ELSE
BEGIN
BEGIN TRY
INSERT TBB_CODE (OrgNode, [BASE_CD], [CD_GRP],[CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC])
VALUES (@OrgNode.GetDescendant(NULL, NULL), @V_CODE, @V_GROUP, @V_KNAME,@V_ENAME,@V_DVALUE,@V_SVALUE,@V_DESC);
END TRY
BEGIN CATCH
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (0, CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE(), @V_GROUP, @V_CODE, @V_KNAME);
SELECT 0 'RetVal', CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE() 'Message', @V_GROUP '[GROUP]', @V_CODE 'CODE', @V_KNAME 'KNAME';
END CATCH
END
END
END
ELSE
BEGIN
DECLARE @NewGroup VARCHAR(50) = '_ROOT_'
BEGIN TRY
INSERT TBB_CODE (OrgNode, [BASE_CD], [CD_GRP],[CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC])
VALUES (HIERARCHYID::GetRoot(), @V_GROUP, @NewGroup, @V_KNAME,@V_ENAME,NULL,NULL,@V_GROUP);
SELECT @OrgNode = OrgNode
FROM TBB_CODE
WHERE [BASE_CD] = @V_GROUP;
INSERT TBB_CODE (OrgNode, [BASE_CD], [CD_GRP],[CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC])
VALUES (@OrgNode.GetDescendant(NULL, NULL), @V_CODE, @V_GROUP, @V_KNAME,@V_ENAME,@V_DVALUE,@V_SVALUE,@V_DESC);
END TRY
BEGIN CATCH
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (0, CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE(), @V_GROUP, @V_CODE, @V_KNAME);
SELECT 0 'RetVal', CONVERT(VARCHAR,ERROR_NUMBER())+':'+ERROR_MESSAGE() 'Message', @V_GROUP '[GROUP]', @V_CODE 'CODE', @V_KNAME 'KNAME';
END CATCH
END
--INSERT #RetTable ([RetVal], [MSG], [GROUP], [CODE], [KNAME])
--VALUES (1, '성공적으로 추가되었습니다.', @V_GROUP, @V_CODE, @V_KNAME);
SELECT 1 'RetVal', '성공적으로 추가되었습니다.' 'Message', @V_GROUP '[GROUP]', @V_CODE 'CODE', @V_KNAME 'KNAME';
--==============================================================================
-- 기존 Code 를 신규 코드 테이블로 데이터를 복사하는 과정
--DECLARE @V_GROUP VARCHAR(50), -- 소속그룹 ID
-- @V_CODE VARCHAR(50), -- 코드
-- @V_KNAME VARCHAR(255)=NULL, -- 한글명칭
-- @V_ENAME VARCHAR(255)=NULL, -- 영문명칭
-- @V_DVALUE DECIMAL(38,10)=NULL, -- 숫자형 값
-- @V_SVALUE VARCHAR(255)=NULL, -- 문자형 값
-- @V_DESC VARCHAR(1024)=NULL -- 설명
--DECLARE CodeData CURSOR FOR
-- SELECT [CD_GRP], [BASE_CD], [CD_NAME],[CD_ENAME],[DVALUE],[SVALUE],[DESC]
-- FROM TB_SNP_CODE
-- WHERE YN = 'N'
-- ORDER BY CD_GRP, [ORDER];
--OPEN CodeData;
--FETCH NEXT FROM CodeData
--INTO @V_GROUP, @V_CODE, @V_KNAME, @V_ENAME, @V_DVALUE, @V_SVALUE, @V_DESC;
--WHILE (@@FETCH_STATUS = 0)
--BEGIN
-- --PRINT @V_GROUP + @V_CODE + @V_KNAME + @V_ENAME + CONVERT(VARCHAR,@V_DVALUE) + @V_SVALUE + @V_DESC + CHAR(13);
-- BEGIN TRY
-- IF NOT EXISTS (SELECT BASE_CD FROM TBB_CODE WHERE BASE_CD=@V_CODE)
-- BEGIN
-- PRINT '실행 SP_CODE_ADD()'+CHAR(13)
-- EXECUTE dbo.SP_CODE_ADD @V_GROUP, @V_CODE, @V_KNAME, @V_ENAME, @V_DVALUE, @V_SVALUE, @V_DESC;
-- END
-- ELSE
-- PRINT '데이터가 이미 있습니다.' + @V_GROUP + ',' + @V_CODE + ',' + @V_KNAME + CHAR(13)
-- END TRY
-- BEGIN CATCH
-- PRINT '오류: ErrorNumber:' + convert(varchar,ERROR_NUMBER()) + ', ErrorMessage:' + ERROR_MESSAGE()
-- + ',' + @V_GROUP + ',' + @V_CODE + ',' + @V_KNAME;
-- --SELECT '오류' CMD, ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() AS ErrorMessage
-- -- , @V_GROUP [GROUP], @V_CODE [CODE], @V_KNAME [KNAME], @V_ENAME [ENAME], @V_DVALUE [DVALUE], @V_SVALUE [SVALUE], @V_DESC [DESC];
-- END CATCH
-- FETCH NEXT FROM CodeData
-- INTO @V_GROUP, @V_CODE, @V_KNAME, @V_ENAME, @V_DVALUE, @V_SVALUE, @V_DESC;
--END
--CLOSE CodeData;
--DEALLOCATE CodeData;
--==============================================================================
--select OrgNode.ToString() AS [PATH], * from TBB_CODE;
--SELECT * FROM #RetTable;
END
3. 데이터 삭제 프로시져
/****** Object: StoredProcedure [dbo].[SP_CODE_DELETE] Script Date: 2015-03-21 오후 12:09:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: jwcho
-- Create date: 2015.03.20
-- Modify date: 2015.03.20
-- Description: 기본코드 정보를 검색한다.
-- 주의사항: 소속그룹이 없이 기본코드 또는 명칭을 검색하면 이 프로시져를 사용하여 검색하는 것이 단순검색하는 것보다 많이 느리다.
-- SP_CODE_DELETE 'BS0001003600030014'
-- =============================================
ALTER PROCEDURE [dbo].[SP_CODE_DELETE]
@V_BASE_CD VARCHAR(50), -- 코드
@V_DEBUG INT=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @V_SQL VARCHAR(MAX)
IF @V_BASE_CD IS NULL OR LEN(@V_BASE_CD) < 1
BEGIN
SELECT -1 'RetVal', '코드가 올바르지 않습니다.' 'MSG', @V_BASE_CD 'CODE';
RETURN
END
IF EXISTS (SELECT BASE_CD FROM TBB_CODE WHERE BASE_CD=@V_BASE_CD AND YN='N')
BEGIN
-- modify statements for procedure here
SET @V_SQL = 'UPDATE TBB_CODE SET '
SET @V_SQL = @V_SQL + 'YN=''Y'''
SET @V_SQL = @V_SQL + ',YN_DATE=GETDATE()'
SET @V_SQL = @V_SQL + 'WHERE BASE_CD='''+@V_BASE_CD+''' AND YN=''N'''
IF @V_DEBUG=0
EXECUTE (@V_SQL)
ELSE
PRINT @V_SQL
SELECT 1 'RetVal', '기본코드 '''+@V_BASE_CD+''' 를 삭제했습니다.' 'MSG', @V_BASE_CD 'BASE_CD'
END
ELSE
SELECT 2 'RetVal', '기본코드 '''+@V_BASE_CD+''' 가 없습니다.' 'MSG', @V_BASE_CD 'BASE_CD'
END
4. 데이터 검색 프로시져
/****** Object: StoredProcedure [dbo].[SP_CODE_SELECT] Script Date: 2015-03-21 오후 12:10:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: jwcho
-- Create date: 2015.03.20
-- Modify date: 2015.03.20
-- Description: 기본코드 정보를 검색한다.
-- 주의사항: 소속그룹이 없이 기본코드 또는 명칭을 검색하면 이 프로시져를 사용하여 검색하는 것이 단순검색하는 것보다 많이 느리다.
-- SP_CODE_SELECT 'BS%','CD_GRP','[ORDER]',0,0
-- =============================================
ALTER PROCEDURE [dbo].[SP_CODE_SELECT]
@V_WORD VARCHAR(50)=NULL,
@V_FIELDNAME VARCHAR(50)=NULL, -- 검색항목: 필드명
@V_ORDER VARCHAR(255)=NULL,
@IS_HISOTY INT=0,
@V_DEBUG INT=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @V_SQL VARCHAR(MAX)
DECLARE @SIGN VARCHAR(5)='='
SET @V_SQL = 'SELECT DISTINCT [OrgNode], [OrgLevel], [BASE_CD],[CD_GRP],[GRPNAME],[CD_NAME],[CD_ENAME],DVALUE,SVALUE,[DESC],[ORDER],[REG_DATE],[CDATE]'+CHAR(13)
SET @V_SQL = @V_SQL+'FROM V_CODE'+CHAR(13)
SET @V_SQL = @V_SQL+'WHERE 1=1'+CHAR(13)
IF dbo.FN_NullCheck(@V_WORD)=0
BEGIN
IF CHARINDEX('%', @V_WORD) > 0
SET @SIGN = 'LIKE'
SET @V_SQL = @V_SQL+'AND '+CASE WHEN dbo.FN_NullCheck(@V_FIELDNAME)=0 THEN @V_FIELDNAME ELSE '[BASE_CD]' END
+' '+@SIGN+' '''+@V_WORD+''''
END
IF @IS_HISOTY=0
SET @V_SQL = @V_SQL+' AND YN=''N'''
IF dbo.FN_NullCheck(@V_ORDER)=0
SET @V_SQL = @V_SQL+CHAR(13)+'ORDER BY '+@V_ORDER
IF @V_DEBUG=0
EXECUTE (@V_SQL)
ELSE
PRINT @V_SQL
END
[참조] 데이터 유형 hierarchyid를 이용하지 않고 일반적인 데이터 유형을 이용한 트리구조
/****** Object: StoredProcedure [dbo].[SP_GET_CODE_TREE] Script Date: 2015-03-21 오후 12:14:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: jwcho
-- Create date: 2014.08.25
-- Modify date: 2014.08.25
-- Description: 기본코드 정보를 검색한다.
-- 주의사항: 소속그룹이 없이 기본코드 또는 명칭을 검색하면 이 프로시져를 사용하여 검색하는 것이 단순검색하는 것보다 많이 느리다.
-- SP_GET_CODE_TREE 'NULL',NULL,NULL,'CD_GRP,[ORDER]',1
-- SP_GET_CODE_TREE '_ROOT_',NULL,NULL
-- SP_GET_CODE_TREE 'BS%',NULL,NULL
-- SP_GET_CODE_TREE 'MOLD',NULL,NULL,'CD_GRP,[ORDER]',1
-- SP_GET_CODE_TREE 'BS00010008','BS000100080002',NULL
-- SP_GET_CODE_TREE NULL,'BS0001','공통(노임)'
-- SP_GET_CODE_TREE NULL,NULL,'공통(노임)','GRPNAME,[ORDER]',1
-- =============================================
ALTER PROCEDURE [dbo].[SP_GET_CODE_TREE]
@V_GROUP VARCHAR(50)=NULL, -- 소속그룹 ID
@V_CODE VARCHAR(50)=NULL, -- 코드
@V_NAME VARCHAR(50)=NULL, -- 명칭
@V_ORDER VARCHAR(50)='CD_GRP,[ORDER]', -- 정렬칼럼
@V_DEBUG INT=0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @V_SQL VARCHAR(MAX);
DECLARE @SIGN VARCHAR(5)='='
SET @V_SQL='WITH CODE_CTE (LVL, [PATH],BASE_CD,CD_GRP,[GRPNAME],CD_NAME,CD_ENAME,DVALUE,SVALUE,[DESC],[ORDER],[REG_DATE],[CDATE]) AS ('+CHAR(13);
-- Anchor member definition'+CHAR(13)
SET @V_SQL=@V_SQL+' SELECT 1 AS LVL,CONVERT(VARCHAR(MAX),[BASE_CD]) [PATH],[BASE_CD],[CD_GRP],[GRPNAME],[CD_NAME],[CD_ENAME],DVALUE,SVALUE,[DESC],[ORDER],[REG_DATE],[CDATE]'+CHAR(13);
SET @V_SQL=@V_SQL+' FROM dbo.V_SNP_CODE B'+CHAR(13);
SET @V_SQL = @V_SQL+'WHERE 1=1'+CHAR(13);
IF dbo.FN_NullCheck(@V_GROUP)=0
BEGIN
IF CHARINDEX('%', @V_GROUP) > 0
SET @SIGN = 'LIKE';
SET @V_SQL = @V_SQL+'AND [CD_GRP] '+@SIGN+' '''+@V_GROUP+'''';
END
ELSE
SET @V_SQL=@V_SQL+' AND CD_GRP=''_ROOT_'''+CHAR(13);
-- Recursive member definition
SET @V_SQL=@V_SQL+' UNION ALL'+CHAR(13)
SET @V_SQL=@V_SQL+' SELECT LVL+1,CONVERT(VARCHAR(MAX),([PATH]+''/''+E.[BASE_CD])) [PATH],E.[BASE_CD],E.[CD_GRP],E.[GRPNAME],E.[CD_NAME],E.[CD_ENAME],E.DVALUE,E.SVALUE,E.[DESC],E.[ORDER],E.[REG_DATE],E.[CDATE]'+CHAR(13)
SET @V_SQL=@V_SQL+' FROM dbo.V_SNP_CODE AS E, CODE_CTE AS T'+CHAR(13)
SET @V_SQL=@V_SQL+' WHERE E.CD_GRP = T.BASE_CD'+CHAR(13)
SET @V_SQL=@V_SQL+')'+CHAR(13)
-- Statement that executes the CTE
SET @V_SQL=@V_SQL+'SELECT DISTINCT LVL, [PATH],BASE_CD,CD_GRP,[GRPNAME],CD_NAME,CD_ENAME,DVALUE,SVALUE,[DESC],[ORDER],[REG_DATE],[CDATE]'+CHAR(13)
SET @V_SQL=@V_SQL+'FROM CODE_CTE'+CHAR(13)
SET @V_SQL=@V_SQL+'WHERE 1=1'+CHAR(13)
SET @SIGN = '=';
IF dbo.FN_NullCheck(@V_CODE)=0
BEGIN
IF CHARINDEX('%', @V_CODE) > 0
SET @SIGN = 'LIKE';
SET @V_SQL = @V_SQL+'AND [BASE_CD]'+' '+@SIGN+' '''+@V_CODE+'''';
END
ELSE IF dbo.FN_NullCheck(@V_NAME)=0
BEGIN
IF CHARINDEX('%', @V_NAME) > 0
SET @SIGN = 'LIKE';
SET @V_SQL = @V_SQL+'AND [CD_NAME]'+' '+@SIGN+' '''+@V_NAME+'''';
END
IF dbo.FN_NullCheck(@V_ORDER)=0
SET @V_SQL=@V_SQL+'ORDER BY '+@V_ORDER
IF @V_DEBUG=0
EXECUTE (@V_SQL)
ELSE
PRINT @V_SQL
END
출처: https://devdb.tistory.com/15 [DB 관련:티스토리]
'DB 관련' 카테고리의 다른 글
[MSSQL] 로그 및 빈공간 삭제 (0) | 2024.12.27 |
---|---|
[MSSQL] BLOB Insert/Update 예제 (0) | 2024.12.27 |
[MSSql] 데이터형 hierarchyid 의 변환방법 (0) | 2024.12.27 |
[MSSql] xp_cmdshell 사용 설정 (0) | 2024.12.27 |
[MSSql] Excel 읽기, 불러오기 (0) | 2024.12.27 |