2019/07/30: 2개의 글

MSSQL 저장프로시저(StoredProcedure) 작성법

Posted by 고 고특파원
2019. 7. 30. 19:09 프로그래밍/MS-SQL

MSSQL을 사용하다 보면 흔히 접할 수 있는것 중의 하나가 바로 저장프로시저(Stored Procedure)이다.

 

저장프로시저는 개발자가 자주 쓰는 쿼리문을 하나의 집합단위로 관리하는것을 말한다.

 

프로그램과 DB를 연결하여 데이터를 관리(데이터조회, 삽입, 수정, 삭제) 하는 수단은 반복되는 작업이므로

DB테이블 1개당 저장프로시저를 보통 (C,R,U,D) 4개의 프로시저를 생성하여 관리한다.

 

본론으로 돌아와서, 저장프로시저를 작성하는 방법에 대해 설명하도록 하겠다.

 

 

저장프로시저(StoredProcedure) 작성 예시

USE [DataBase이름]
GO

CREATE PROCEDURE [dbo].[프로지서이름]
	 
	--	@P_PARAMETER1		VARCHAR(10)		-- 파라미터가 필요한경우, 추가해야한다.

AS  
BEGIN  
	
	-- 자주사용하는 SQL 쿼리문
	SELECT
		NULL

END

USE[DataBase이름] => 개발중인 데이터베이스 이름을 입력해서 넣어준다.

GO

 

CREATE PROCCEDURE [dbo].[프로시저이름] => 프로시저이름은 본인이 설정하고 싶은대로 입력하여 넣어준다.

 

파라미터가 필요한 경우,

 

@파라미터변수명    자료형

 

저장프로시저를 통해서 SELECT문, INSERT문, UPDATE문, DELETE문 등 데이터를 조작하는 쿼리를 입력하여 관리할 수 있다.

 

 

저장프로시저(StoredProcedure) 수정 예시

저장프로시저를 생성하고 난 후, 수정을 해야하는 경우는 생성된 저장프로시저를 찾고 간단히 수정을 해주면 된다.

 

CREATE PROCCEDURE [dbo].[프로시저이름] >> ALTER PROCCEDURE [dbo].[프로시저이름]

 

생성예시문과 전부다 동일하고 윗부분만 다르다.

 

저장프로시저 수정 예시

 

아래에는 저장프로시저를 쉽게 만들수 있도록, 자동으로 생성해주는 스크립트 파일 링크를 추가해 놓도록 하겠다.

필요한 경우 가져가서 마음껏 사용 하도록 바란다.

(가져가실때 공감과 감사의표시로 댓글 하나씩만 부탁드립니다.)

 

자세한 내용과 설명은 아래링크에서 확인하시면 됩니다.

 

[프로그래밍/MS-SQL] - [MS-SQL] CRUD 자동 스크립트 작성 내용 공유

 

[MS-SQL] CRUD 자동 스크립트 작성 내용 공유

해당 SQL스크립트는 MSSQL 저장프로시저를 자동으로 생성하는데 도움을 주는 프로시저이다. 프로그램을 개발하면서 가장 기본이되는 작업은 데이터를 읽고, 입력하고, 수정하고, 삭제하는 작업이다. 프로그램을 개..

maelife.tistory.com

 
제 블로그의 내용이 도움이 되셨나요?

여러분의 공감댓글이 큰 힘이됩니다 :)

▼▼▼▼▼▼▼▼▼▼▼
이 댓글을 비밀 댓글로

MSSQL 커서(CURSOR) 사용법

Posted by 고 고특파원
2019. 7. 30. 09:14 프로그래밍/MS-SQL

MSSQL에서는 커서라는것이 존재하는데, 테이블의 데이터를 커서에 담고, 한개의 행단위로 읽어주는 기능을 한다.

이름 (NAME) 나이 (AGE) 성별 (SEX)
박지성 36 남자
이영표 38 남자
손흥민 28 남자
기성용 32 남자

위와 같은 데이터 테이블이 존재 한다면, 정방향으로 읽었을 때 박지성->이영표->손흥민->기성용 순서로 데이터테이블의 행 정보를 읽어낼 수 있다. 

 

독자의 경우에는, 반복적인 배치작업을 할때 주로 사용한다.

 

그렇다면 사용방법에 대해 설명하도록 하겠다.

 

1. 대상 테이블생성 및 데이터삽입 (이 부분은 대상 테이블이 없을때만 해당)

2. 커서에 DB테이블 담기 및 반복작업 수행

 

1. 대상 테이블 생성 및 데이터삽입

DB테이블 생성

CREATE TABLE SOCCER_PLAYER
(
    "ID"    int             NOT NULL    IDENTITY, 
    "NAME"  nvarchar(50)    NULL, 
    "AGE"   int             NULL, 
    "SEX"   nvarchar(10)    NULL, 
    CONSTRAINT PK_SOCCER_PLAYER PRIMARY KEY (ID)
)

MSSQL 구문을 이용하여 'SOCCER_PLAYER'라고 하는 DB테이블을 생성하였고, 컬럼에는 기본키, 이름, 나이, 성별 컬럼항목을 추가하였다.

 

데이터삽입

INSERT INTO SOCCER_PLAYER(NAME, AGE, SEX) VALUES('박지성',36, '남자')
INSERT INTO SOCCER_PLAYER(NAME, AGE, SEX) VALUES('이영표',38, '남자')
INSERT INTO SOCCER_PLAYER(NAME, AGE, SEX) VALUES('손흥민',28, '남자')
INSERT INTO SOCCER_PLAYER(NAME, AGE, SEX) VALUES('기성용',32, '남자')

INSERT 구문을 이용하여, 데이터를 삽입하였다. 여기서 ID(기본키)는 1씩 자동증가 설정되어있으므로 넣어주지 않아도 된다. 

 

DB 결과셋

2. 커서에 DB테이블 담기 및 반복작업 수행

-- 한개 ROW정보를 담을 변수 선언
DECLARE @P_NAME		VARCHAR(100)
DECLARE @P_AGE		INT
DECLARE @P_SEX		VARCHAR(10)

-- 1. 커서 사용 선언
DECLARE SOCCER_CURSOR CURSOR FOR
SELECT
	 NAME
	,AGE
	,SEX
FROM SOCCER_PLAYER

-- 2. 커서 반복문 돌리기
OPEN SOCCER_CURSOR      --커서 사용을 위해 오픈
FETCH NEXT FROM SOCCER_CURSOR INTO @P_NAME,@P_AGE, @P_SEX

--커서를이용해 한개 행씩 읽음 
WHILE @@FETCH_STATUS = 0
BEGIN

	--반복 작업 수행
	PRINT('이름: ' + @P_NAME)
	
	FETCH NEXT FROM SOCCER_CURSOR INTO @P_NAME,@P_AGE, @P_SEX
END

--커서 닫고 초기화
CLOSE SOCCER_CURSOR
DEALLOCATE SOCCER_CURSOR

커서는 한개의 Row(행)단위로 데이터를 읽는다고 했으므로, 한개 Row정보를 담을 변수를 선언한다.

커서(CURSOR) 사용 선언을 하고 SELECT한 테이블을 커서에 담아준다. (DECLARE 커서이름 CURSOR FOR)

 

커서(CURSOR)를 통해 반복작업을 수행한다. 그리고 마지막으로 사용한 커서는 반드시 닫아주고 초기화 해주어야 한다.

이 댓글을 비밀 댓글로