반응형
SMALL

DB 39

프로시져 cursor 상태 확인

MSSQL에서 Cursor 여러개 돌릴때 오류 발생시에 cursor 상태를 보고 작동중인 Cursor를 닫아줘야 한다. 선언되지 않은 Cursor를 닫으면 오류가 발생하니 Try ~~ catch문을 사용하여 catch에서 아래 명령어를 선언해준다. 커서명은 본인이 명명한 이름 EX ================================================================ BEGIN TRY ...................... END TRY BEGIN CATCH DECLARE @CursorStatus INT; SET @CursorStatus = CURSOR_STATUS('local', '커서명1'); IF (@CursorStatus >= 0) BEGIN CLOSE 커서명; DE..

DB 2024.02.24

조건절 IN 에 파라메타값 만들기 '1,2,3,4'

문자열 파라메타로 in에 값 넣기 아아 귀찮다 했는데 이런 방법이 아래 Function 을 만들어준다. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[CSVToTable] (@InStr VARCHAR(MAX)) RETURNS @TempTab TABLE (id int not null) AS BEGIN ;-- Ensure input ends with comma SET @InStr = REPLACE(@InStr + ',', ',,', ',') DECLARE @SP INT DECLARE @VALUE VARCHAR(1000) WHILE PATINDEX('%,%', @INSTR ) 0 BEGIN SELECT @SP = PATINDEX..

DB 2024.02.24

[MSSQL] LOCK 걸린거 찾기

종종 필요하여 퍼왔습니다. --Lock 걸린 spid 검출(Mode 부분이 X로 표시된것이 lock) EXEC sp_lock --Lock 걸린 spid를 입력하면 현재 돌고 있는 쿼리를 출력해준다. dbcc inputbuffer(80) --Lock 을 유발하는 spid를 종료시킨다. kill 78 --Lock으로 의심되는 spid만 추출 SELECT P.STATUS, P.PROGRAM_NAME, P.HOSTNAME, P.SPID, P.BLOCKED, P.KPID, P.CPU, P.physical_io, P.waittype, P.waittime, P.lastwaittype, P.waitresource, P.dbid , P.uid, P.memusage, P.login_time, P.last_batch, P...

DB 2024.02.22

[MSSQL] MERGE 문법

개인적으로 MERGE는 괜찮은것 같다는 생각이 든다. UPDATE , INSERT, DELETE를 쉽게 할수 있기 때문인가 사용방법은 아래를 보고 알아서 사용하시기를 단점 : 입력하는 테이블이 LINK로 연결된 테이블이면 사용이 불가하다는점 명심하기 바란다. 반대로 가져오고자 하는 테이블은 LINK로 연결된 테이블이 가능하다. 아무것도 모르는 필자는 그것 때문에 반나절을 삽질하고 있었다는 ==== 구문 ======= MERGE [입력할 테이블] AS A USING [가져올 테이블(SELECT A,B,C,D,E FROM TEMP WHERE A = 1)] AS B ON A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2 WHEN MATCHED THEN UPDATE SET A.C = B.C, A...

DB 2024.02.21

[오라클] ANSI Join 에 using문 사용

DB 기초교육이라는걸 들어봤다 기초교육이라 경력자가 뭐가 들을께 있을까 하지만 의외로 모르는것 투성이고 들을게 있다. 경력 사원으로서 부끄러운 일이지만 다아는건 아니니 알아간다는게 중요하다고 생각하고 패스 필자도 공부하다보니 ANSI 조인을 다시 보게되었다. 그래서 찾게 된게 ANSI 조인시에 조건을 거는 컬럼명이 같은경우 USING문을 사용하네 어~~~~ 내가 모르는 신기한 기능이 있다. 그래서 남긴다 내머리속에 지우개가 많은 관계로 WITH CTE AS ( SELECT '총무' AS DEPT , '10000' AS PRICE , '항복' AS NAME FROM DUAL UNION SELECT '영업' AS DEPT , '20000' AS PRICE , '만세' AS NAME FROM DUAL UNIO..

DB 2024.02.20
반응형
LIST