'개발중'에 해당되는 글 4건
-
2024.04.22
-
2024.04.22
-
2024.04.18
-
2024.04.11
[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 폴더 지우고 솔루션 정리 -> 빌드 후 다시 실행하기
한 번에 될 때도 있고, 운나쁘면 세번 정도 반복하니 정상 실행됨.
폴더가 생성되었는데 경로를 못찾아서 발생하는,,? 뭐 그런 상태인가봄