- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
MS SQLserver MS SQL Stored Procedure
2020.01.26 00:54
MS SQL Stored Procedure
저장 프로시저란?
- SQL Query문들을 하나의 함수처럼 실행하기 위한 Query의 집합
장점
- 하나의 요청으로 여러 SQL 쿼리를 실행하여 네트워크 부하 감소
- 미리 구문 분석 및 내부 중간 코드로 변환을 끝내야 함으로 처리 시간 감소
- 최초 사용한 SP는 캐싱이 되어 재사용이 용이
- 사용자에게 테이블 접근 권한을 대신 프로지서 접근 권한을 주어 DataBase 보안성 강화
- 모듈식 프로그래밍 가능

위와 같이 SSMS(2014) 에서 클릭하면 아래와 같은 파일이 생긴다

| 매개 변수 | 값 |
|---|---|
| 작성자 | Your name |
| 만든 날짜 | Today's date |
| Description | Returns employee data |
| Procedure_name | HumanResources.uspGetEmployeesTest |
| @Param1 | @LastName |
| @Datatype_For_Param1 | nvarchar(50) |
| Default_Value_For_Param1 | NULL |
| @Param2 | @FirstName |
| @Datatype_For_Param2 | nvarchar(50) |
| Default_Value_For_Param2 | NULL |
각 매개 변수칸에 입력 값을 넣어주어 실행하면 SP가 만들어 진다.
예제 SP를 실행하기 위한 table 셋팅
CREATE TABLE testTable(
NAME NVARCHAR(50),
AGE INT)
GO
INSERT INTO testTable (NAME,AGE) VALUES ('코드블랙',15)
INSERT INTO testTable (NAME,AGE) VALUES ('홍길동',25)
INSERT INTO testTable (NAME,AGE) VALUES ('김복남',35)
INSERT INTO testTable (NAME,AGE) VALUES ('이순신',52)
INSERT INTO testTable (NAME,AGE) VALUES ('둘리',26)
SELECT *
FROM testTable
위 쿼리를 실행하면 테이블을 만들고 만들어진 테이블 내용을 확인할 수 있다.
동적쿼리와 sp_executesql을 이용한 입력 변수와 출력변수가 있는 SP 예제
- @input의 입력 값의 유무에 따라 WHERE절을 @Sql String에 추가하여 Sql문이 새로 캐싱 되는 SP
CREATE PROCEDURE TestSP
-- Add the parameters for the stored procedure here
@input NVARCHAR(50) =null,
@output INT =0 OUT
AS
----------------------------------------------------
--sp_executesql을 실행할 변수 선언
----------------------------------------------------
DECLARE @Sql NVARCHAR(MAX) = ''
DECLARE @Where NVARCHAR(MAX) = ''
DECLARE @Param NVARCHAR(MAX) = ''
----------------------------------------------------
--입력 이름이 들어오면 WHERE절 추가
----------------------------------------------------
IF ISNULL(@input,'') <> '' BEGIN
SET @Where = @Where + N'
WHERE NAME = @input '
END
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SET @Sql = @Sql + N'
SELECT @output = AGE
FROM dbo.testTable '
SET @Sql = @Sql + @Where
SET @Param = N'
@input NVARCHAR(50),
@output INT OUT '
EXEC SP_EXECUTESQL @Sql
,@Param
,@input = @input
,@output = @output
출처: https://blackas119.tistory.com/37 [CodeBlack]
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86284 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78742 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95485 |
| 1 | 빅데이터분석기사 필기 1과목 요약 - 빅데이터 분석 기획 ① | 졸리운_곰 | 2021.01.07 | 2316 |

