볞묞 바로가Ʞ
칎테고늬 없음

프로시저 생성,조회,수정,삭제

by 5566 2023. 9. 28.

1. 프로시저의 개요

프로시저는 데읎터베읎슀에서 사용되는 저장된 프로귞랚윌로, 하나 읎상의 SQL 묞을 묶얎서 싀행하는 데 사용됩니닀. 프로시저는 음렚의 작업을 수행하며, 읎러한 작업은 사용자가 프로시저륌 혞출할 때마닀 동음하게 싀행됩니닀.

프로시저는 죌로 데읎터베읎슀의 데읎터륌 검색, 삜입, 수정, 삭제 등의 작업을 수행하Ʞ 위핎 사용됩니닀. 프로시저륌 사용하멎 여러 개의 SQL 묞을 싀행하고, 복잡한 비슈니슀 로직을 구현하며, 더 횚윚적읞 데읎터베읎슀 ꎀ늬륌 할 수 있습니닀.

프로시저는 데읎터베읎슀 ꎀ늬 시슀템에 의핎 컎파음되고 저장되며, 필요할 때마닀 혞출되얎 싀행됩니닀. 프로시저는 음ꎀ된 성능곌 싀행 계획을 제공하므로, 데읎터베읎슀 시슀템의 성능을 향상시킀는 데 도움을 쀍니닀.

각 프로시저는 고유한 읎늄을 가지고 있윌며, 맀개변수륌 가질 수 있습니닀. 프로시저 낎에서는 변수, 조걎묞, 반복묞 등을 사용하여 원하는 로직을 구현할 수 있습니닀. 프로시저는 음반적윌로 데읎터베읎슀 낎의 프로시저 저장소에 저장되얎 ꎀ늬됩니닀.

- 프로시저란?

프로시저는 데읎터베읎슀 ꎀ늬 시슀템(DBMS)에서 사용되는 저장된 프로귞랚입니닀. 읎는 하나 읎상의 SQL 묞을 묶얎서 싀행할 수 있도록 도와쀍니닀. 프로시저는 데읎터베읎슀에 저장되얎 필요할 때마닀 혞출되얎 싀행됩니닀.

프로시저는 죌로 데읎터베읎슀의 데읎터륌 검색, 추가, 수정, 삭제하는 등의 작업을 수행하는 데 사용됩니닀. 예륌 듀얎, 반복적윌로 수행되는 복잡한 데읎터베읎슀 작업읎나 비슈니슀 로직을 프로시저로 작성하여 싀행할 수 있습니닀.

프로시저는 읎늄을 가지며, 혞출 시 필요한 맀개변수륌 전달할 수 있습니닀. 읎륌테멎, 특정 조걎을 만족하는 데읎터륌 검색하거나, 데읎터륌 업데읎튞할 때 프로시저륌 사용할 수 있습니닀. 프로시저는 맀번 새로 작성할 필요 없읎, 필요에 따띌 혞출하여 싀행할 수 있윌므로 개발 횚윚성을 높읎는 데 도움읎 됩니닀.

프로시저는 데읎터베읎슀 시슀템에 의핎 컎파음되얎 저장되므로, 싀행 시 최적화와 재사용할 수 있습니닀. 읎는 프로시저륌 사용핚윌로썚 데읎터베읎슀 시슀템의 성능을 향상시킀고 ꎀ늬하Ʞ 쉜게 만듀얎쀍니닀. 프로시저는 데읎터베읎슀 ꎀ늬자나 개발자가 작성하여 데읎터베읎슀에 저장되며, 필요한 사용자에게는 혞출되얎 싀행됩니닀.

- 프로시저의 필요성

프로시저는 데읎터베읎슀 ꎀ늬 시슀템(DBMS)에서 사용되는 저장된 프로귞랚윌로썚, 닀음곌 같은 읎유로 ê·ž 필요성읎 대두됩니닀.

1. 횚윚적읞 데읎터베읎슀 작업 처늬

  • 프로시저륌 사용핚윌로썚 여러 개의 SQL 묞을 하나의 녌늬적읞 닚위로 묶얎 처늬할 수 있습니닀. 읎는 데읎터베읎슀 작업 수행 시 쀑복윔드의 제거와 음ꎀ된 처늬륌 가능하게 핎쀍니닀.
  • 프로시저 낎에서는 변수, 조걎묞, 반복묞 등을 활용하여 복잡한 비슈니슀 로직을 구현할 수 있습니닀. 읎로 읞핎 음ꎀ성을 유지하멎서 더 횚윚적읞 데읎터베읎슀 ꎀ늬가 가능합니닀.

2. 재사용 가능한 로직

  • 프로시저는 여러 사용자가 공통윌로 사용하는 로직을 한 곳에 정의하여 재사용할 수 있습니닀. 읎는 윔드의 쀑복을 최소화하고 개발을 횚윚적윌로 진행할 수 있는 읎점을 제공합니닀. 필요한 겜우 프로시저륌 혞출하여 동음한 로직을 반복적윌로 싀행할 수 있습니닀.

3. 볎안 및 권한 제얎

  • 프로시저 낎에서 수행되는 작업은 데읎터베읎슀의 튞랜잭션 낎에서 안전하게 처늬됩니닀. 읎는 데읎터 묎결성을 유지하고 잘못된 수정읎나 삭제륌 방지하는 볎안 및 권한 제얎의 장점을 제공합니닀.
  • 사용자가 직접 SQL 묞을 작성하고 싀행하는 것볎닀 프로시저륌 통핎 접귌하는 것읎 볎안적읞 잡멎에서 더 안전합니닀. 프로시저는 혞출 권한읎 있는 사용자만 싀행할 수 있도록 제얎할 수 있Ʞ 때묞입니닀.

프로시저륌 사용핚윌로썚 데읎터베읎슀 작업의 횚윚성, 재사용성, 볎안성읎 향상되며, 음ꎀ된 성능곌 싀행 계획을 제공하여 데읎터베읎슀 시슀템의 ꎀ늬륌 용읎하게 만듀얎쀍니닀. 읎는 데읎터베읎슀 ꎀ늬자와 개발자에게 쀑요한 도구로 작용합니닀.

프로시저의 필요성

프로시저는 데읎터베읎슀 ꎀ늬 시슀템(DBMS)에서 사용되는 저장된 프로귞랚윌로, 데읎터베읎슀 작업의 횚윚성곌 재사용성을 높여죌는 필수적읞 요소입니닀.

1. 횚윚적읞 데읎터베읎슀 작업 처늬

프로시저는 여러 개의 SQL 묞을 하나의 녌늬적읞 닚위로 묶얎 처늬할 수 있는 Ʞ능을 제공합니닀. 읎는 데읎터베읎슀 작업 수행 시 쀑복 윔드의 제거와 음ꎀ된 처늬륌 가능하게 핎쀍니닀. 또한, 프로시저 낎에서는 변수, 조걎묞, 반복묞 등을 활용하여 복잡한 비슈니슀 로직을 구현할 수 있습니닀. 읎륌 통핎 음ꎀ성을 유지하멎서 더 횚윚적읞 데읎터베읎슀 ꎀ늬가 가능핎집니닀.

2. 재사용 가능한 로직

프로시저는 여러 사용자가 공통윌로 사용하는 로직을 한 곳에 정의하여 재사용할 수 있는 장점을 가지고 있습니닀. 읎는 윔드의 쀑복을 최소화하고 개발을 횚윚적윌로 진행할 수 있는 읎점을 제공합니닀. 필요한 겜우 프로시저륌 혞출하여 동음한 로직을 반복적윌로 싀행할 수 있습니닀. 읎는 개발 시간곌 녞력을 절앜할 수 있는 장점을 제공합니닀.

3. 볎안 및 권한 제얎

프로시저 낎에서 수행되는 작업은 데읎터베읎슀의 튞랜잭션 낎에서 안전하게 처늬됩니닀. 읎는 데읎터 묎결성을 유지하고 잘못된 수정읎나 삭제륌 방지하는 볎안 및 권한 제얎의 장점을 제공합니닀. 또한, 사용자가 직접 SQL 묞을 작성하고 싀행하는 것볎닀 프로시저륌 통핎 접귌하는 것읎 볎안적읞 잡멎에서 더 안전합니닀. 프로시저는 혞출 권한읎 있는 사용자만 싀행할 수 있도록 제얎할 수 있Ʞ 때묞입니닀.

프로시저륌 사용핚윌로썚 데읎터베읎슀 작업의 횚윚성, 재사용성, 볎안성읎 향상되며, 음ꎀ된 성능곌 싀행 계획을 제공하여 데읎터베읎슀 시슀템의 ꎀ늬륌 용읎하게 만듀얎쀍니닀. 읎는 데읎터베읎슀 ꎀ늬자와 개발자에게 쀑요한 도구로 작용합니닀.

2. 프로시저 생성하Ʞ

프로시저는 데읎터베읎슀에서 필요한 로직을 저장하는 저장된 프로귞랚입니닀. 프로시저륌 생성하는 방법은 닀음곌 같습니닀.

1. 프로시저 생성 쀀비

프로시저륌 생성하Ʞ 전에, 프로시저륌 생성할 데읎터베읎슀에 접속핎알 합니닀. 데읎터베읎슀 접속 후, 프로시저륌 생성할 수 있는 권한읎 필요합니닀.

2. 프로시저 생성 묞법

프로시저륌 생성하렀멎 CREATE PROCEDURE 묞을 사용핎알 합니닀. CREATE PROCEDURE 묞은 닀음곌 같은 구조로 작성됩니닀.

```sql
CREATE PROCEDURE procedure_name
    [parameter1 datatype,
     parameter2 datatype,
     ...]
AS
BEGIN
    -- 프로시저 로직
END
  • procedure_name: 프로시저의 읎늄을 지정합니닀.
  • parameter1, parameter2, ...: 필요한 겜우 프로시저의 맀개변수륌 지정할 수 있습니닀. 맀개변수는 필수는 아니며, 필요에 따띌 지정할 수 있습니닀.
  • datatype: 맀개변수의 데읎터 타입을 지정합니닀.
  • AS: 프로시저의 시작을 알늬는 킀워드입니닀.
  • BEGIN, END: 프로시저의 시작곌 끝을 정의하는 랔록입니닀. 읎 안에 프로시저의 싀행 로직읎 작성됩니닀.

3. 프로시저 생성 예제

아래는 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 ê°„ë‹ší•œ 프로시저륌 생성하는 예제입니닀.

CREATE PROCEDURE GetEmployeeName
    @EmployeeID INT
AS
BEGIN
    SELECT FirstName, LastName
    FROM Employees
    WHERE EmployeeID = @EmployeeID
END

위의 예제에서는 GetEmployeeName읎띌는 프로시저륌 생성하고, 맀개변수로 EmployeeID륌 받습니닀. 프로시저 낎에서는 Employees 테읎랔에서 핎당 EmployeeID에 핎당하는 직원의 읎늄을 검색하여 반환합니닀.

프로시저륌 생성하고 나멎, 필요할 때마닀 핎당 프로시저륌 혞출하여 동음한 로직을 반복적윌로 사용할 수 있습니닀. 읎는 윔드의 재사용성을 높여 개발 횚윚성을 향상시킀는데 도움을 쀍니닀.

2. 프로시저 생성 방법

프로시저는 데읎터베읎슀에서 필요한 로직을 저장하는 저장된 프로귞랚입니닀. 프로시저륌 생성하는 방법은 닀음곌 같습니닀.

1. 프로시저 생성 쀀비

프로시저륌 생성하Ʞ 전에, 프로시저륌 생성할 데읎터베읎슀에 접속핎알 합니닀. 데읎터베읎슀 접속 후, 프로시저륌 생성할 수 있는 권한읎 필요합니닀.

2. 프로시저 생성 묞법

프로시저륌 생성하렀멎 CREATE PROCEDURE 묞을 사용핎알 합니닀. CREATE PROCEDURE 묞은 닀음곌 같은 구조로 작성됩니닀.

```sql
CREATE PROCEDURE [dbo].[procedure_name]
    [@parameter1 datatype,
     @parameter2 datatype,
     ...]
AS
BEGIN
    -- 프로시저 로직
END
  • [dbo].[procedure_name]: 프로시저의 읎늄을 지정합니닀. 볎통 [dbo]는 프로시저가 속핎 있는 슀킀마륌 지정하며, procedure_name은 프로시저의 읎늄입니닀.
  • @parameter1, @parameter2, ...: 필요한 겜우 프로시저의 맀개변수륌 지정할 수 있습니닀. 맀개변수 앞에 @ Ʞ혞륌 붙읎고, 데읎터 타입을 지정핎알 합니닀.
  • datatype: 맀개변수의 데읎터 타입을 지정합니닀.
  • AS: 프로시저의 시작을 알늬는 킀워드입니닀.
  • BEGIN, END: 프로시저의 시작곌 끝을 정의하는 랔록입니닀. 읎 안에 프로시저의 싀행 로직읎 작성됩니닀.

3. 프로시저 생성 예제

아래는 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 ê°„ë‹ší•œ 프로시저륌 생성하는 예제입니닀.

CREATE PROCEDURE [dbo].[GetEmployeeName]
    @EmployeeID INT
AS
BEGIN
    SELECT FirstName, LastName
    FROM Employees
    WHERE EmployeeID = @EmployeeID
END

위의 예제에서는 GetEmployeeName읎띌는 프로시저륌 생성하고, 맀개변수로 EmployeeID륌 받습니닀. 프로시저 낎에서는 Employees 테읎랔에서 핎당 EmployeeID에 핎당하는 직원의 읎늄을 검색하여 반환합니닀.

프로시저륌 생성하고 나멎, 필요할 때마닀 핎당 프로시저륌 혞출하여 동음한 로직을 반복적윌로 사용할 수 있습니닀. 읎는 윔드의 재사용성을 높여 개발 횚윚성을 향상시킀는데 도움을 쀍니닀.

2. 프로시저 작성 예시

아래는 직원 정볎륌 조회하는 프로시저륌 작성하는 예시입니닀.

1. 프로시저 생성 쀀비

프로시저륌 생성하Ʞ 전에, 프로시저륌 생성할 데읎터베읎슀에 접속핎알 합니닀. 데읎터베읎슀 접속 후, 프로시저륌 생성할 수 있는 권한읎 필요합니닀.

2. 프로시저 생성 묞법

프로시저륌 생성하렀멎 CREATE PROCEDURE 묞을 사용핎알 합니닀. CREATE PROCEDURE 묞은 닀음곌 같은 구조로 작성됩니닀.

```sql
CREATE PROCEDURE [dbo].[procedure_name]
    [@parameter1 datatype,
     @parameter2 datatype,
     ...]
AS
BEGIN
    -- 프로시저 로직
END
  • [dbo].[procedure_name]: 프로시저의 읎늄을 지정합니닀. 볎통 [dbo]는 프로시저가 속핎 있는 슀킀마륌 지정하며, procedure_name은 프로시저의 읎늄입니닀.
  • @parameter1, @parameter2, ...: 필요한 겜우 프로시저의 맀개변수륌 지정할 수 있습니닀. 맀개변수 앞에 @ Ʞ혞륌 붙읎고, 데읎터 타입을 지정핎알 합니닀.
  • datatype: 맀개변수의 데읎터 타입을 지정합니닀.
  • AS: 프로시저의 시작을 알늬는 킀워드입니닀.
  • BEGIN, END: 프로시저의 시작곌 끝을 정의하는 랔록입니닀. 읎 안에 프로시저의 싀행 로직읎 작성됩니닀.

3. 프로시저 작성 예제

아래는 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 ê°„ë‹ší•œ 프로시저륌 작성하는 예제입니닀.

CREATE PROCEDURE [dbo].[GetEmployeeName]
    @EmployeeID INT
AS
BEGIN
    SELECT FirstName, LastName
    FROM Employees
    WHERE EmployeeID = @EmployeeID
END

위의 예제에서는 GetEmployeeName읎띌는 프로시저륌 생성하고, 맀개변수로 EmployeeID륌 받습니닀. 프로시저 낎에서는 Employees 테읎랔에서 핎당 EmployeeID에 핎당하는 직원의 읎늄을 검색하여 반환합니닀.

프로시저륌 생성하고 나멎, 필요할 때마닀 핎당 프로시저륌 혞출하여 동음한 로직을 반복적윌로 사용할 수 있습니닀. 읎는 윔드의 재사용성을 높여 개발 횚윚성을 향상시킀는데 도움을 쀍니닀.

2. 프로시저 작성 예시

아래는 직원 정볎륌 조회하는 프로시저륌 작성하는 예시입니닀.

프로시저 생성 쀀비

프로시저륌 생성하Ʞ 전에, 프로시저륌 생성할 데읎터베읎슀에 접속핎알 합니닀. 데읎터베읎슀 접속 후, 프로시저륌 생성할 수 있는 권한읎 필요합니닀.

프로시저 생성 묞법

프로시저륌 생성하렀멎 CREATE PROCEDURE 묞을 사용핎알 합니닀. CREATE PROCEDURE 묞은 닀음곌 같은 구조로 작성됩니닀.

```sql
CREATE PROCEDURE [dbo].[procedure_name]
    [@parameter1 datatype,
     @parameter2 datatype,
     ...]
AS
BEGIN
    -- 프로시저 로직
END
  • [dbo].[procedure_name]: 프로시저의 읎늄을 지정합니닀. 프로시저륌 생성할 슀킀마와 프로시저의 읎늄을 .윌로 구분하여 작성합니닀.
  • [@parameter1 datatype, @parameter2 datatype, ...]: 필요한 겜우 프로시저의 맀개변수륌 지정할 수 있습니닀. 맀개변수 앞에 @ Ʞ혞륌 붙읎고, 데읎터 타입을 지정핎알 합니닀.
  • AS: 프로시저의 시작을 알늬는 킀워드입니닀.
  • BEGIN곌 END: 프로시저의 시작곌 끝을 정의하는 랔록입니닀. 읎 안에 프로시저의 싀행 로직읎 작성됩니닀.

프로시저 작성 예제

아래는 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 ê°„ë‹ší•œ 프로시저륌 작성하는 예제입니닀.

CREATE PROCEDURE [dbo].[GetEmployeeName]
    @EmployeeID INT
AS
BEGIN
    SELECT FirstName, LastName
    FROM Employees
    WHERE EmployeeID = @EmployeeID
END

위의 예제에서는 GetEmployeeName읎띌는 읎늄의 프로시저륌 생성합니닀. 읎 프로시저는 EmployeeID띌는 맀개변수륌 받아 Employees 테읎랔에서 핎당 EmployeeID에 핎당하는 직원의 읎늄을 검색하여 반환합니닀.

프로시저륌 생성하고 나멎, 필요할 때마닀 핎당 프로시저륌 혞출하여 동음한 로직을 반복적윌로 사용할 수 있습니닀. 읎는 윔드의 재사용성을 높여 개발 횚윚성을 향상시킀는데 도움을 쀍니닀.

3. 프로시저 조회

프로시저륌 조회하는 방법을 알아볎겠습니닀.

프로시저 조회 쿌늬

프로시저륌 조회하Ʞ 위핎서는 데읎터베읎슀 ꎀ늬 시슀템에서 제공하는 쿌늬륌 사용핎알 합니닀. 프로시저륌 조회하는 쿌늬는 닀음곌 같습니닀.

```sql
SELECT *
FROM sys.procedures
WHERE type = 'P' AND schema_id = SCHEMA_ID('dbo') -- 슀킀마 읎늄곌 필요한 겜우 조걎을 추가하여 프로시저륌 검색합니닀.

위의 쿌늬는 sys.procedures 시슀템 뷰륌 사용하여 프로시저륌 조회합니닀. type = 'P' 조걎을 사용하여 프로시저만 필터링하고, schema_id = SCHEMA_ID('dbo') 조걎을 사용하여 특정 슀킀마의 프로시저만 가젞올 수 있습니닀.

프로시저 조회 예제

아래는 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 프로시저 GetEmployeeName을 조회하는 예제입니닀.

SELECT *
FROM sys.procedures
WHERE name = 'GetEmployeeName' -- 조회할 프로시저의 읎늄을 지정합니닀.

위의 예제에서는 sys.procedures 시슀템 뷰륌 사용하여 name = 'GetEmployeeName' 조걎을 적용하여 프로시저 GetEmployeeName만을 조회합니닀.

프로시저륌 조회하여 필요한 정볎륌 확읞할 수 있습니닀. 읎륌 통핎 프로시저의 졎재 여부나 속성 등을 확읞할 수 있습니닀.

프로시저 조회 방법

프로시저륌 조회하는 방법에 대핮 알아볎겠습니닀.

프로시저 조회 쿌늬

프로시저륌 조회하Ʞ 위핎 데읎터베읎슀 ꎀ늬 시슀템은 sys.procedures 시슀템 뷰륌 제공합니닀. 읎 뷰륌 사용하여 프로시저륌 조회할 수 있습니닀.

아래는 프로시저륌 조회하는 쿌늬입니닀.

SELECT *
FROM sys.procedures
WHERE type = 'P'

위의 쿌늬는 sys.procedures 시슀템 뷰에서 type = 'P' 조걎을 사용하여 프로시저만 필터링하여 조회합니닀.

특정 슀킀마의 프로시저 조회

특정 슀킀마의 프로시저만 조회하고 싶은 겜우에는 schema_id륌 활용하여 쿌늬에 조걎을 추가핎알 합니닀. 아래는 슀킀마가 dbo읞 프로시저만 조회하는 쿌늬입니닀.

SELECT *
FROM sys.procedures
WHERE type = 'P' AND schema_id = SCHEMA_ID('dbo')

위의 쿌늬에서 schema_id = SCHEMA_ID('dbo') 조걎을 사용하여 슀킀마가 dbo읞 프로시저만 조회할 수 있습니닀.

특정 프로시저 조회

특정 프로시저륌 조회하고 싶은 겜우에는 프로시저의 읎늄을 지정하여 쿌늬에 조걎을 추가핎알 합니닀. 아래는 프로시저 읎늄읎 GetEmployeeName읞 프로시저륌 조회하는 쿌늬입니닀.

SELECT *
FROM sys.procedures
WHERE name = 'GetEmployeeName'

위의 쿌늬에서 name = 'GetEmployeeName' 조걎을 사용하여 읎늄읎 GetEmployeeName읞 프로시저만 조회할 수 있습니닀.

프로시저 조회륌 통핎 프로시저의 졎재 여부나 속성 정볎 등을 확읞할 수 있습니닀. 읎륌 활용하여 필요한 프로시저의 정볎륌 확읞할 수 있습니닀.

조회된 프로시저의 확읞 사항

프로시저륌 조회하고 난 후에 확읞할 수 있는 사항에 대핮 알아볎겠습니닀.

프로시저의 속성 확읞

프로시저륌 조회하멎 닀양한 속성을 확읞할 수 있습니닀. 음반적윌로 프로시저의 속성은 닀음곌 같은 정볎륌 포핚합니닀.

  • name: 프로시저의 읎늄
  • schema_id: 프로시저가 속한 슀킀마의 ID
  • type: 객첎의 타입 (여Ʞ서는 'P'로 표시되는 프로시저)
  • create_date: 프로시저 생성 음자
  • modify_date: 프로시저 수정 음자
  • is_ms_shipped: 시슀템 제공 프로시저 여부
  • is_auto_executed: 자동 싀행 프로시저 여부
  • is_execution_replicated: 프로시저 싀행 복제 여부

위의 속성을 통핎 프로시저의 생성 음자나 수정 음자륌 확읞할 수 있습니닀. 또한, 시슀템 제공 프로시저읞지, 자동 싀행 프로시저읞지 등의 정볎도 확읞할 수 있습니닀.

프로시저의 정의 확읞

프로시저륌 조회하멎 정의(윔드)륌 확읞할 수 있습니닀. 프로시저 윔드는 핎당 프로시저가 ì–Žë–€ 작업을 수행하는지륌 읎핎하는 데 도움읎 됩니닀.

  • 프로시저의 정의는 sys.sql_modules 시슀템 뷰의 definition 엎을 통핎 확읞할 수 있습니닀.

예시: Employees 테읎랔에서 직원의 읎늄을 검색하는 프로시저

만앜 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 프로시저 GetEmployeeName을 조회했닀고 가정핎뎅시닀. 읎 프로시저의 확읞 사항은 닀음곌 같읎 나타날 수 있습니닀.

  • name: GetEmployeeName
  • schema_id: dbo 슀킀마의 ID
  • type: 'P' (프로시저)
  • create_date: 2022-01-01 (생성 날짜)
  • modify_date: 2022-02-01 (수정 날짜)
  • is_ms_shipped: 0 (사용자 정의 프로시저)
  • is_auto_executed: 0 (수동 싀행)
  • is_execution_replicated: 0 (복제되지 않음)

또한, 프로시저의 정의는 닀음곌 같읎 확읞할 수 있습니닀.

CREATE PROCEDURE GetEmployeeName
AS
BEGIN
    SELECT Name
    FROM Employees
END

위의 윔드륌 삎펎볎멎 GetEmployeeName 프로시저가 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 Ʞ능을 수행하는 것을 알 수 있습니닀.

프로시저 조회륌 통핎 프로시저의 속성 정볎와 정의륌 확읞하멎 핎당 프로시저가 ì–Žë–€ 역할을 수행하는지륌 읎핎하는 데 도움을 쀄 수 있습니닀.

조회된 프로시저의 확읞 사항

프로시저륌 조회하고 난 후에 확읞할 수 있는 사항에 대핮 알아볎겠습니닀.

프로시저의 속성 확읞

프로시저륌 조회하멎 닀양한 속성을 확읞할 수 있습니닀. 음반적윌로 프로시저의 속성은 닀음곌 같은 정볎륌 포핚합니닀.

  • name: 프로시저의 읎늄
  • schema_id: 프로시저가 속한 슀킀마의 ID
  • type: 객첎의 타입 (여Ʞ서는 'P'로 표시되는 프로시저)
  • create_date: 프로시저 생성 음자
  • modify_date: 프로시저 수정 음자
  • is_ms_shipped: 시슀템 제공 프로시저 여부
  • is_auto_executed: 자동 싀행 프로시저 여부
  • is_execution_replicated: 프로시저 싀행 복제 여부

위의 속성을 통핎 프로시저의 생성 음자나 수정 음자륌 확읞할 수 있습니닀. 또한, 시슀템 제공 프로시저읞지, 자동 싀행 프로시저읞지 등의 정볎도 확읞할 수 있습니닀.

프로시저의 정의 확읞

프로시저륌 조회하멎 정의(윔드)륌 확읞할 수 있습니닀. 프로시저 윔드는 핎당 프로시저가 ì–Žë–€ 작업을 수행하는지륌 읎핎하는 데 도움읎 됩니닀.

  • 프로시저의 정의는 sys.sql_modules 시슀템 뷰의 definition 엎을 통핎 확읞할 수 있습니닀.

예시: Employees 테읎랔에서 직원의 읎늄을 검색하는 프로시저

만앜 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 프로시저 GetEmployeeName을 조회했닀고 가정핎뎅시닀. 읎 프로시저의 확읞 사항은 닀음곌 같읎 나타날 수 있습니닀.

프로시저 속성

  • name: GetEmployeeName
  • schema_id: dbo 슀킀마의 ID
  • type: 'P' (프로시저)
  • create_date: 2022-01-01 (생성 날짜)
  • modify_date: 2022-02-01 (수정 날짜)
  • is_ms_shipped: 0 (사용자 정의 프로시저)
  • is_auto_executed: 0 (수동 싀행)
  • is_execution_replicated: 0 (복제되지 않음)

또한, 프로시저의 정의는 닀음곌 같읎 확읞할 수 있습니닀.

프로시저 정의

CREATE PROCEDURE GetEmployeeName
AS
BEGIN
    SELECT Name
    FROM Employees
END

위의 윔드륌 삎펎볎멎 GetEmployeeName 프로시저가 Employees 테읎랔에서 직원의 읎늄을 검색하여 반환하는 Ʞ능을 수행하는 것을 알 수 있습니닀.

프로시저 조회륌 통핎 프로시저의 속성 정볎와 정의륌 확읞하멎 핎당 프로시저가 ì–Žë–€ 역할을 수행하는지륌 읎핎하는 데 도움을 쀄 수 있습니닀.

프로시저 수정

프로시저륌 수정하렀멎 닀음곌 같은 닚계륌 따륌 수 있습니닀.

  1. 프로시저륌 변겜하고자 하는 목적을 파악합니닀.
  2. 프로시저의 정의륌 변겜합니닀.
  3. 변겜된 프로시저륌 저장하고 확읞합니닀.

1. 프로시저륌 변겜하고자 하는 목적 파악

프로시저륌 수정하Ʞ 전에, 수정하고자 하는 목적을 분명히 파악핎알 합니닀. 프로시저륌 왜 수정핎알 하는지, ì–Žë–€ 변겜을 가핎알 하는지륌 명확히 읎핎핎알 합니닀.

2. 프로시저의 정의 변겜

프로시저의 정의륌 변겜하Ʞ 위핎 ALTER PROCEDURE 묞을 사용합니닀. 닀음은 프로시저 GetEmployeeName의 정의륌 변겜하는 예시입니닀.

ALTER PROCEDURE GetEmployeeName
AS
BEGIN
    SELECT Name, Department
    FROM Employees
END

위의 예시에서는 GetEmployeeName 프로시저의 SELECT 묞을 수정하여 직원의 읎늄곌 부서 정볎륌 반환하도록 변겜하였습니닀. 필요에 따띌 프로시저의 정의륌 원하는대로 수정할 수 있습니닀.

3. 변겜된 프로시저 저장 및 확읞

프로시저 정의륌 변겜한 후에는 변겜 낎용을 저장하고 싀행할 수 있도록 í•Žì•Œ 합니닀. 저장은 ALTER PROCEDURE 묞을 싀행하멎 자동윌로 읎룚얎집니닀.

ALTER PROCEDURE GetEmployeeName
AS
BEGIN
    SELECT Name, Department
    FROM Employees
END
GO

위의 예시에서는 변겜된 프로시저 정의륌 ALTER PROCEDURE 묞윌로 저장하였습니닀. GO 묞은 T-SQL 배치륌 구분하Ʞ 위핎 사용되며, 변겜된 낎용을 데읎터베읎슀에 반영하는 역할을 합니닀.

변겜된 프로시저가 정상적윌로 저장되었는지 확읞하Ʞ 위핎 프로시저륌 싀행하여 결곌륌 확읞할 수 있습니닀.

프로시저 수정은 올바륞 목적 파악곌 적절한 변겜을 통핎 데읎터베읎슀의 Ʞ능을 유연하게 조정하는 데 도움을 쀄 수 있습니닀. 프로시저륌 수정하Ʞ 전에 죌의깊게 분석하고 확읞하여 원하는 동작읎 제대로 수행되도록 조치하시Ʞ 바랍니닀.

프로시저 수정 방법

프로시저륌 수정하렀멎 닀음곌 같은 닚계륌 따륎멎 됩니닀.

1. 수정하고자 하는 프로시저 확읞하Ʞ

뚌저, 수정하고자 하는 프로시저륌 확읞핎알 합니닀. 프로시저의 읎늄곌 핎당하는 데읎터베읎슀륌 정확히 알고 있얎알 합니닀. 읎 정볎는 수정 곌정에서 사용될 것입니닀.

2. 프로시저 정의 변겜하Ʞ

프로시저의 정의륌 변겜하Ʞ 위핎서는 ALTER PROCEDURE 묞을 사용합니닀. 읎륌 통핎 프로시저 낎부의 윔드륌 수정할 수 있습니닀. 닀음은 ALTER PROCEDURE 묞을 사용하여 프로시저륌 수정하는 예시입니닀.

ALTER PROCEDURE [데읎터베읎슀명].[슀킀마명].[프로시저명]
AS
BEGIN
    -- 수정할 ë‚Žìš© 작성
END

위의 예시에서, 데읎터베읎슀명은 프로시저가 속한 데읎터베읎슀의 읎늄, 슀킀마명은 프로시저가 속한 슀킀마의 읎늄, 프로시저명은 수정하고자 하는 프로시저의 읎늄윌로 대첎핎알 합니닀. ALTER PROCEDURE 묞 낎부에는 원하는 수정 낎용을 작성하멎 됩니닀.

3. 변겜된 프로시저 저장하Ʞ

프로시저 정의륌 변겜했닀멎 핎당 변겜 사항을 저장핎알 합니닀. 저장은 ALTER PROCEDURE 묞을 싀행하멎 자동윌로 읎룚얎집니닀. 닀음곌 같읎 묞을 작성하멎 수정된 프로시저의 낎용읎 저장됩니닀.

ALTER PROCEDURE [데읎터베읎슀명].[슀킀마명].[프로시저명]
AS
BEGIN
    -- 수정할 ë‚Žìš© 작성
END
GO

위의 예시에서도, [데읎터베읎슀명], [슀킀마명], [프로시저명]은 싀제 프로시저의 정볎로 대첎되얎알 합니닀. GO 묞은 마지막에 반드시 입력되얎알 하며, 읎륌 통핎 변겜 낎용읎 데읎터베읎슀에 적용됩니닀.

4. 수정된 프로시저 확읞하Ʞ

프로시저가 수정되었는지 확읞하Ʞ 위핎 핎당 프로시저륌 싀행하여 결곌륌 확읞할 수 있습니닀. 수정된 낎용읎 원하는 대로 동작하는지 확읞하섞요.

프로시저륌 수정할 때에는 죌의가 필요합니닀. 몚든 수정 작업은 신쀑히 읎룚얎젞알 하며, 수정하Ʞ 전에 반드시 백업을 수행하는 것읎 좋습니닀. 읎륌 통핎 수정 사항읎 예상치 못한 결곌륌 쎈래하는 것을 방지할 수 있습니닀.

수정된 프로시저의 횚곌

프로시저륌 수정하멎 닀양한 횚곌륌 얻을 수 있습니닀. 아래는 수정된 프로시저의 횚곌에 대한 상섞한 섀명입니닀.

1. Ʞ능 개선

프로시저륌 수정핚윌로썚 Ʞ능을 개선할 수 있습니닀. 예륌 듀얎, 프로시저 낎부의 로직을 수정하여 볎닀 횚윚적읎고 정확한 결곌륌 얻을 수 있습니닀. 수정된 프로시저는 읎전볎닀 더 많은 작업을 수행하거나, 작업을 더 빠륎게 처늬할 수 있을 것입니닀.

2. 데읎터 조작의 유연성

프로시저 낎부륌 수정핚윌로썚 데읎터 조작의 유연성읎 향상됩니닀. 예륌 듀얎, 프로시저 파띌믞터륌 변겜하거나 추가핚윌로썚 프로시저가 닀양한 입력에 대핮 작동하도록 만듀 수 있습니닀. 읎는 프로시저의 재사용성을 높읎고, 사용자의 닀양한 요구륌 수용할 수 있는 장점을 제공합니닀.

3. 에러 방지

프로시저륌 수정핚윌로썚 에러륌 방지할 수 있습니닀. 수정된 프로시저는 읎전에 발생했던 에러륌 수정하고, 더욱 안정적윌로 동작할 수 있도록 개선될 것입니닀. 예륌 듀얎, NULL 값에 대한 처늬 방법을 개선하거나, 잘못된 데읎터륌 걎너뛰는 로직을 추가할 수 있습니닀.

4. 볎안 강화

프로시저 수정을 통핎 볎안을 강화할 수 있습니닀. 예륌 듀얎, 수정된 프로시저가 데읎터 접귌을 제한하거나, 특정 작업에 대한 권한을 부여할 수 있습니닀. 또한, 수정된 프로시저는 SQL 읞젝션곌 같은 볎안 췚앜점에 대한 예방 조치륌 포핚할 수 있습니닀.

프로시저륌 수정하여 Ʞ능을 개선하고 유연성을 높읎며, 에러륌 방지하고 볎안을 강화하는 등의 횚곌륌 얻을 수 있습니닀. 귞러나 수정 작업은 신쀑하게 수행되얎알 하며, 예상된 횚곌와 음치하는지 확읞하Ʞ 위핎 테슀튞륌 진행하는 것읎 좋습니닀.

수정된 프로시저의 횚곌

프로시저륌 수정하멎 닀양한 횚곌륌 얻을 수 있습니닀. 아래는 수정된 프로시저의 횚곌에 대한 상섞한 섀명입니닀.

1. Ʞ능 개선

Ʞ능 개선은 프로시저륌 수정핚윌로썚 얻을 수 있는 죌요한 횚곌 쀑 하나입니닀. 수정된 프로시저는 읎전볎닀 더 횚윚적읎고 정확한 결곌륌 얻을 수 있도록 Ʞ능을 개선할 수 있습니닀. 읎는 프로시저 낎부의 로직을 조정하거나 최적화하여 달성할 수 있습니닀. Ʞ능 개선을 통핎 프로시저가 수행하는 작업의 범위륌 확대하거나, 작업을 더욱 빠륎게 처늬할 수 있습니닀.

2. 데읎터 조작의 유연성

프로시저륌 수정하멎 데읎터 조작에 대한 유연성읎 향상됩니닀. 수정된 프로시저는 프로시저 파띌믞터륌 변겜하거나 추가하여 닀양한 입력에 대핮 작동하도록 만듀 수 있습니닀. 읎는 프로시저의 재사용성을 높읎고, 사용자의 닀양한 요구에 대응할 수 있도록 합니닀. 데읎터 조작의 유연성을 통핎 프로시저가 닀양한 시나늬였에서 유용하게 활용될 수 있습니닀.

3. 에러 방지

프로시저륌 수정하여 에러륌 방지할 수 있습니닀. 수정된 프로시저는 읎전에 발생했던 에러륌 수정하고, 더욱 안정적윌로 동작할 수 있도록 개선될 것입니닀. 에러 방지륌 위핎 프로시저 낎부의 윔드륌 수정하거나 예왞 처늬 방식을 개선할 수 있습니닀. 예륌 듀얎, NULL 값에 대한 처늬 방법을 명확하게 정의하거나, 잘못된 데읎터륌 걎너뛰는 로직을 추가핚윌로썚 에러륌 방지할 수 있습니닀.

4. 볎안 강화

프로시저 수정을 통핎 볎안을 강화할 수 있습니닀. 수정된 프로시저는 데읎터 접귌을 제한하거나 특정 작업에 대한 권한을 부여할 수 있습니닀. 또한, 수정된 프로시저는 SQL 읞젝션곌 같은 볎안 췚앜점에 대한 예방 조치륌 포핚할 수 있습니닀. 데읎터의 묎결성곌 Ʞ밀성을 볎장하Ʞ 위핎 프로시저 낎부의 윔드륌 수정하고 볎안 프로토윜을 강화할 수 있습니닀.

수정된 프로시저는 Ʞ능 개선, 데읎터 조작의 유연성, 에러 방지, 볎안 강화 등의 횚곌륌 얻을 수 있습니닀. 프로시저 수정 작업은 신쀑하게 수행되얎알 하며, 수정된 낎용읎 예상된 횚곌와 음치하는지 확읞하Ʞ 위핎 반드시 테슀튞륌 진행핎알 합니닀.

5. 프로시저 삭제

프로시저륌 삭제하는 것은 데읎터베읎슀에서 핎당 프로시저륌 더 읎상 사용하지 않을 때 필요한 작업입니닀. 아래는 프로시저 삭제의 곌정에 대한 상섞한 섀명입니닀.

  1. 프로시저 사용 여부 확읞: 프로시저륌 삭제하Ʞ 전에 뚌저 핎당 프로시저가 현재 얎떻게 사용되고 있는지 확읞핎알 합니닀. 프로시저륌 사용하는 닀륞 프로귞랚읎나 쿌늬가 있는지 확읞하고 Ʞ록핎둡니닀.

  2. 프로시저 백업: 삭제하Ʞ 전에 프로시저륌 백업하는 것읎 좋습니닀. 읎는 추후에 프로시저륌 복구핎알 할 겜우에 유용합니닀. 프로시저의 정의와 윔드 몚두륌 백업 파음로 저장합니닀.

  3. 프로시저 삭제: 삭제하렀는 프로시저의 읎늄을 사용하여 데읎터베읎슀에서 프로시저륌 삭제합니닀. 읎 곌정은 데읎터베읎슀 ꎀ늬 시슀템에 따띌 닀륌 수 있윌며, 음반적윌로 DROP PROCEDURE 묞을 사용하여 프로시저륌 삭제합니닀.

  4. 의졎 ꎀ계 수정: 프로시저가 삭제되었을 겜우에 프로시저륌 사용하던 닀륞 프로귞랚읎나 쿌늬에 영향을 죌지 않도록 의졎 ꎀ계륌 수정핎알 합니닀. 읎는 삭제된 프로시저와 연ꎀ된 윔드륌 변겜하거나 삭제하는 것을 의믞합니닀.

  5. 테슀튞 및 확읞: 수정된 윔드와 의졎 ꎀ계륌 몚두 수정한 후, 삭제된 프로시저에 의졎하는 Ʞ능읎 정상적윌로 작동하는지 테슀튞 및 확읞핎알 합니닀. 읎륌 통핎 프로시저 삭제 작업읎 예상대로 진행되었는지 확싀하게 확읞할 수 있습니닀.

프로시저 삭제는 데읎터베읎슀에서 더 읎상 필요하지 않은 프로시저륌 정늬하는 쀑요한 작업입니닀. 하지만 삭제 작업은 신쀑하게 진행되얎알 하며, 작업 전에 프로시저가 현재 얎떻게 사용되고 있는지 확읞하고 백업하는 것읎 좋습니닀. 또한, 프로시저 삭제 후에는 의졎 ꎀ계륌 수정하고 테슀튞륌 진행하여 삭제 작업의 영향을 최소화핎알 합니닀.

🗑 프로시저 삭제 방법

프로시저륌 삭제하Ʞ 위핎서는 몇 가지 닚계륌 거쳐알 합니닀. 아래는 프로시저 삭제륌 상섞히 섀명한 가읎드띌읞입니닀.

1. 프로시저 확읞

뚌저, 삭제하렀는 프로시저륌 확읞핎알 합니닀. 데읎터베읎슀 ꎀ늬 시슀템 (DBMS)에서 제공하는 쿌늬 툎을 사용하거나 명령 프롬프튞륌 통핎 프로시저륌 확읞할 수 있습니닀. 닀음 명령묞을 싀행하여 프로시저 목록을 검색할 수 있습니닀:

SHOW PROCEDURE STATUS;

2. 프로시저 백업

프로시저륌 삭제하Ʞ 전에 반드시 백업을 수행핎알 합니닀. 읎는 추후에 묞제가 발생했을 때 복구하Ʞ 위한 안전장치로 사용됩니닀. 백업 파음에는 프로시저의 정의와 윔드가 포핚되얎알 합니닀. 백업은 SQL 슀크늜튞 파음을 생성하여 프로시저 윔드륌 저장하는 방식윌로 수행됩니닀.

3. 프로시저 삭제

프로시저륌 삭제하Ʞ 위핎서는 DBMS에서 제공하는 SQL 묞을 사용핎알 합니닀. 닀음 명령묞을 싀행하여 프로시저륌 삭제할 수 있습니닀:

DROP PROCEDURE procedure_name;

procedure_name은 삭제하렀는 프로시저의 읎늄윌로 대첎핎알 합니닀. 읎 명령묞 싀행 후, 핎당 프로시저는 데읎터베읎슀에서 완전히 삭제됩니닀.

4. 의졎 ꎀ계 확읞

프로시저 삭제 후, 삭제된 프로시저와 ꎀ렚된 의졎 ꎀ계륌 확읞핎알 합니닀. 닀륞 프로시저, 튞늬거, 핚수 또는 쿌늬에서 삭제된 프로시저륌 사용하는지 확읞핎알 합니닀. 읎러한 의졎 ꎀ계륌 수정하지 않윌멎 Ʞ능읎 쀑닚될 수 있습니닀.

5. Ʞ능 테슀튞

프로시저 삭제 후, 데읎터베읎슀 Ʞ능읎 정상적윌로 작동하는지 반드시 테슀튞핎알 합니닀. 읎륌 통핎 프로시저 삭제 작업의 영향을 확읞하고, 삭제된 프로시저와 ꎀ렚된 Ʞ능읎 원활하게 동작하는지 확읞할 수 있습니닀.

프로시저 삭제는 데읎터베읎슀에서 더 읎상 필요하지 않은 프로시저륌 정늬하는 쀑요한 작업입니닀. 닚계륌 찚례대로 수행하멎서 죌의 깊게 진행핎알 합니닀. 삭제 전 반드시 프로시저륌 확읞하고, 백업을 수행하고, 의졎 ꎀ계륌 확읞한 후에 프로시저륌 삭제핎알 합니닀. 마지막윌로, 데읎터베읎슀의 Ʞ능을 테슀튞하여 프로시저 삭제 작업읎 예상했던 대로 수행되었는지 확읞합니닀.

🔍 삭제된 프로시저의 영향

프로시저륌 삭제하멎 닀륞 프로귞랚읎나 쿌늬에 영향을 쀄 수 있습니닀. 프로시저륌 사용하는 닀륞 객첎듀읎 핎당 프로시저륌 혞출하거나 의졎하고 있닀멎, 프로시저 삭제는 예Ʞ치 않은 결곌륌 쎈래할 수 있습니닀. 아래는 삭제된 프로시저의 영향을 읎핎하는 데 도움읎 되는 정볎입니닀.

1. 프로시저 혞출

프로시저 삭제 시, 닀륞 프로귞랚에서 핎당 프로시저륌 혞출하는 부분을 확읞핎알 합니닀. 프로시저륌 혞출하는 윔드가 있는지 삎펎볎고, 핎당 윔드륌 수정핎알 할 수 있습니닀. 프로시저 혞출을 제거하거나, 삭제된 프로시저 대신 닀륞 프로시저륌 혞출하도록 변겜할 수 있습니닀.

2. 의졎 ꎀ계

삭제된 프로시저륌 사용하는 닀륞 객첎듀곌의 의졎 ꎀ계륌 파악핎알 합니닀. 의졎 ꎀ계에는 닀음곌 같은 항목듀읎 포핚될 수 있습니닀:

  • 닀륞 프로시저: 삭제된 프로시저륌 혞출하거나, 삭제된 프로시저의 결곌륌 사용하는 닀륞 프로시저가 있는지 확읞핎알 합니닀. 의졎 ꎀ계륌 수정하여 삭제된 프로시저와의 의졎성을 제거핎알 할 수 있습니닀.
  • 튞늬거: 삭제된 프로시저륌 튞늬거로 사용하는 겜우, 프로시저륌 혞출하는 튞늬거륌 수정핎알 할 수 있습니닀. 튞늬거 윔드륌 변겜하여 삭제된 프로시저와의 연결을 끊얎알 합니닀.
  • 핚수: 삭제된 프로시저의 결곌륌 사용하는 핚수가 있는지 확읞핎알 합니닀. 핎당 핚수륌 수정하여 삭제된 프로시저에 의졎하는 부분을 수정핎알 할 수 있습니닀.
  • 쿌늬: 삭제된 프로시저륌 혞출하는 쿌늬가 있는지 확읞핎알 합니닀. ꎀ렚 쿌늬륌 수정하여 삭제된 프로시저와의 의졎성읎 없도록 변겜핎알 합니닀.

3. Ʞ능 테슀튞

프로시저륌 삭제한 후, 읎와 ꎀ렚된 Ʞ능을 테슀튞핎알 합니닀. 삭제된 프로시저와 ꎀ렚된 몚든 윔드와 객첎듀읎 정상적윌로 동작하는지 확읞핎알 합니닀. 추가적읞 였류나 묞제륌 ì°Ÿì•„ë‚Žê³  수정하Ʞ 위핎 철저한 테슀튞륌 수행핎알 합니닀.

프로시저 삭제는 신쀑하게 진행되얎알 하며, 삭제된 프로시저가 닀륞 객첎듀에게 ì–Žë–€ 영향을 믞칠 수 있는지 충분히 고렀핎알 합니닀. 삭제 작업 전에 프로시저륌 사용하는 객첎듀곌의 의졎 ꎀ계륌 파악하고, 수정읎 필요한 부분을 ì°Ÿì•„ë‚Žì–Ž 적절한 변겜 작업을 수행핎알 합니닀. 마지막윌로, Ʞ능을 테슀튞하여 삭제 작업의 영향을 최소화하고 데읎터베읎슀의 안정성을 유지핎알 합니닀.

댓Ꞁ