'개발중'에 해당되는 글 4건

개발중

[MSSQL] CURSOR 커서 아주 쉽게 바로 사용하기

개념이나 정의는 따로 없음.

 

※ 필요한 것

  1) 넣어줘야 되는 조회 쿼리 A

  2) INSERT 하거나 UPDATE 할수도 있고 뭐 SELECT 를 해야되는 쿼리 B

-- 1. 커서 변수 세팅
-- A 쿼리의 컬럼 개수만큼 만들어줌.
DECLARE @C_COL1 VARCHAR(10)
DECLARE @C_COL2 VARCHAR(10)

-- 2. 커서 변수 받아오기 
DECLARE CURSOR1 CURSOR FOR
/* 넣어줘야 되는 쿼리 A 작성 */
SELECT COL1 
	 , COL2
  FROM MYTABLE
  
 OPEN CURSOR1 
 FETCH NEXT FROM CURSOR1 INTO @C_COL1, @C_COL2
 
 -- 3. 커서 실행
 WHILE @@FETCH_STATUS = 0    
    BEGIN  

		/* INSERT 하거나 UPDATE 할수도 있고 뭐 SELECT 를 해야되는 쿼리 B 작성 */
        -- (1) 조회된 변수로 프로시저 실행
        INSERT INTO #TEMP_TABLE -- #TEMP_TABLE 컬럼 값 미리 변수 선언하기.
        EXEC [프로시저명] '파라미터1', '파라미터2', @C_COL1, @C_COL2, '', ''
        
        -- (2) TABLE UPDATE
        UPDATE MY_UPDATE_TABLE
           SET COL1 = @C_COL1
             , COL2 = @C_COL2
             
        -- (3) TABLE INSERT
        INSERT INTO MY_INSERT_TABLE
        (
         	COL1
         	, COL2
        )
        VALUES
        (
        	@C_COL1
            , @C_COL2
        )

        FETCH NEXT FROM CURSOR1 INTO @C_COL1, @C_COL2

    END

-- 4. 커서 종료
CLOSE CURSOR1    
DEALLOCATE CURSOR1

 

끝~~

 

,
개발중

[MSSQL] 소소한 팁 (1) : ROW_NUMBER(), 줄넘김, 임시테이블, 기본일자, 시퀀스 생성 및 사용

-- 1. [ROWNUM]

-- 1-1. 순차적으로 순번을 지정(그룹 X)
-- ROWNUM이 1, 2, 3 ,,, 1씩 증가
SELECT ROW_NUMBER() OVER(ORDER BY [정렬하고 싶은 컬럼명]) AS ROWNUM
	 , BATCH_NO
  FROM [테이블] 
  

-- 1-2. 그룹별로 순차적으로 순번 지정
-- EX) 특정컬럼 값이 '01', '02', '03'일 때 각 그룹별로 순번을 지정
-- '01'에서 1, 2, 3 ,,, '02'에서 1, 2, 3 ,,, 조건 안걸어주면 당연히 중복 생김
SELECT ROW_NUMBER() OVER(PARTITION BY [특정컬럼명] ORDER BY [정렬하고 싶은 컬럼명]) AS ROWNUM
  FROM [테이블]
  

-- 2. [줄넘김]
SELECT 'LINE1' + CHAR(13) + CHAR(10) + 'LINE2'

/* 아래와 같은 형태로 보이도록 함
	LINE1
	LINE2
*/


-- 3. [임시 테이블]

-- ※ 임시 테이블 #EX_TABLE 초기화
IF OBJECT_ID('tempdb..#EX_TABLE') IS NOT NULL
    DROP TABLE #EX_TABLE
    
-- 3-1. 임시 테이블에 값 넣기 (1)
SELECT *
  INTO #EX_TABLE
  FROM MYTABLE -- 넣고 싶은 데이터를 조회한 뒤 FROM 전에 INTO #임시테이블명 넣어주기

-- 3-2. 임시 테이블에 값 넣기 (2) : 프로시저 실행하여 넣기
-- 프로시저를 실행한 데이터 형식 그대로 생성
CREATE TABLE #EX_TABLE 
(
	ROW_SEQ INT,
    COLUNM1 VARCHAR(10),
    COLUMN2 VARCHAR(50)
)

INSERT INTO #EX_TABLE 
EXEC [프로시저명] '파라미터1', '파라미터2'
    

-- 4. 원하는 기간을 일 단위로 조회
SELECT CONVERT(VARCHAR(10), DATEADD(D, NUMBER, '20240101'), 23) AS 'DATE' -- 'YYYY-MM-DD' 형식
FROM MASTER..SPT_VALUES
WHERE TYPE = 'P'
AND NUMBER <= DATEDIFF(D, '20240101'/*시작일자*/, '20240131'/*종료일자*/)    

/* 출력값
	DATE
    2024-01-01
	2024-01-02
	2024-01-03
    ...
    2024-01-31
*/
-- 날짜 형식은 원하는대로 변경하여 사용


-- 5. 시퀀스 생성
CREATE SEQUENCE [dbo].[시퀀스명] 
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999999
CACHE 
GO

-- 생성 후 시퀀스 사용
NEXT VALUE FOR [시퀀스명] -- 시퀀스 채번

 

작성하던 와중에도 몇 개 또 씀,,

외우면 좋겠지만 매번 까먹으니까 적어놓기.

,
개발중

[MSSQL] 프로시저/함수/테이블 키워드 검색 쿼리

하루 한 번 이상은 쓰는,, 키워드 검색 쿼리

-- 1) 테이블 내 컬럼 찾기
SELECT TB.NAME  AS 'TABLE'		
	 , COL.NAME AS 'COLUMN'		
	 , TB.CREATE_DATE			
	 , TB.MODIFY_DATE			
  FROM SYS.TABLES TB
 INNER JOIN SYS.COLUMNS COL 
    ON TB.OBJECT_ID = COL.OBJECT_ID
 WHERE COL.NAME LIKE '%' + '찾고 싶은 키워드' + '%'
 ORDER BY TB.NAME 
 
 -- 2) 프로시저 내 키워드 검색
SELECT NAME, CREATE_DATE, MODIFY_DATE 
  FROM sys.procedures
 WHERE OBJECT_DEFINITION(object_id) LIKE '%' + '찾고 싶은 키워드' + '%'
 ORDER BY MODIFY_DATE DESC

-- 3) FUNCTION 포함하여 찾기
SELECT B.NAME       AS NAME     
     , B.TYPE_DESC  AS 'TYPE'     
     , A.DEFINITION AS CONTENTS 
     , B.CREATE_DATE 
     , B.MODIFY_DATE 
  FROM SYS.SQL_MODULES A  WITH (NOLOCK)
  LEFT JOIN SYS.OBJECTS B WITH (NOLOCK) 
    ON A.OBJECT_ID = B.OBJECT_ID
 WHERE DEFINITION LIKE '%' + '찾고 싶은 키워드' + '%'

 

코드블럭 수정은 어떻게 하는건지 몰라서 그냥 맨날 쓰던 그대로 적었는데 왜 미묘하게 띄어쓰기 다름 신경쓰인다;

 

'찾고 싶은 키워드' <- 에 원하는 단어를 넣어서 검색하면 됨

SQL 편집기에 저장해놓고 쓰면 꽤 쓸만함

,
개발중

c# 메타데이터 파일을 찾을 수 없습니다 오류 해결 방법

 

해당하는 프로젝트 폴더에 들어가 bin, obj 폴더 지우고 솔루션 정리 -> 빌드 후 다시 실행하기

 

한 번에 될 때도 있고, 운나쁘면 세번 정도 반복하니 정상 실행됨.

폴더가 생성되었는데 경로를 못찾아서 발생하는,,? 뭐 그런 상태인가봄

,

카운터

Today :
Yesterday :
Total :

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

링크