데이터베이스 저장 프로세스 및 함수와의 차이

6305 단어 저장 프로세스
1. 저장 프로세스의 개념
Stored Procedure 는 특정 기능을 수행하기 위한 SQL 문의 모음입니다.컴파일하여 데이터베이스에 저장하다.
저장 프로세스는 데이터베이스의 중요한 대상이다. 사용자는 저장 프로세스의 이름을 지정하고 매개 변수를 주어 실행한다.
저장 프로세스는 흐름 제어와 SQL 문장으로 작성되는 과정으로 이 과정은 컴파일과 최적화를 거쳐 데이터베이스 서버에 저장된다.
저장 프로세스는 프로그램이 하나의 변조를 통해 실행할 수 있고 사용자가 변수를 설명할 수 있습니다.
이 동시에 저장 프로세스는 매개 변수를 수신하고 출력하며 저장 프로세스를 실행하는 상태 값을 되돌려줄 수도 있고 플러그인 호출도 할 수 있다.
2. 저장 과정과 함수의 차이
1. 일반적으로 저장 프로세스가 실현하는 기능은 좀 복잡해야 하지만 함수의 실현 기능은 목적성이 비교적 강하다.
2. 저장 프로세스에서 매개 변수(output)를 되돌릴 수 있지만 함수는 값이나 테이블 대상만 되돌릴 수 있다.
3. 저장 프로세스는 일반적으로 하나의 독립된 부분으로 실행되고 함수는 조회 문장의 한 부분으로 호출될 수 있다. 함수는 표의 대상을 되돌릴 수 있기 때문에 조회 문장에FROM 키워드의 뒤에 있을 수 있다.
3. 저장 프로세스의 기능
이러한 언어는 주로 다음과 같은 기능을 제공하여 사용자가 인용 수요에 부합되는 프로그램을 설계할 수 있도록 한다. ①변수 설명 ②ANSI 호환되는 SQL 명령(예를 들어 Select, Update....)③ 일반 프로세스 제어 명령(if...else...,while...)④ 내부 함수
4. 저장 프로세스의 장점
① 저장 프로세스의 능력은 SQL 언어의 기능과 유연성을 크게 향상시켰다.저장 과정은 흐름 제어 문장으로 작성할 수 있어 유연성이 강하고 복잡한 판단과 복잡한 연산을 완성할 수 있다.
② 데이터의 보안 및 무결성을 보장합니다.이유1: 저장 프로세스를 통해 권한이 없는 사용자가 통제하에 간접적으로 데이터베이스에 접근하여 데이터의 안전을 확보할 수 있다.이유2: 저장 프로세스를 통해 관련 동작을 함께 발생시켜 데이터베이스의 완전성을 유지할 수 있다.
③ 저장 프로세스를 실행하기 전에 데이터베이스에서 문법과 문법 분석을 하고 최적화 실행 방안을 제시했다.이렇게 이미 컴파일된 과정은 SQL 문장의 성능을 크게 개선할 수 있다.SQL 문을 실행하는 대부분의 작업이 완료되었기 때문에 저장 프로세스는 매우 빠른 속도로 실행될 수 있다.
④ 네트워크의 통신량을 줄일 수 있다.이유: 클라이언트가 저장 프로세스를 호출하려면 저장 프로세스 이름과 관련 매개 변수만 전달하면 되고 SQL 문장을 전송하는 데 비해 자연 데이터량이 많이 적다.
⑤ 기업 규칙을 나타내는 연산 프로그램을 데이터베이스 서버에 넣어 다음과 같이 한다. 1).집중 제어.
2). 엔터프라이즈 규칙이 변경되면 애플리케이션을 수정하지 않고도 서버에서 스토리지 프로세스를 변경할 수 있습니다.
기업 규칙의 특징은 자주 변화하는 것이다. 만약에 기업 규칙을 나타내는 연산 프로그램을 응용 프로그램에 넣으면 기업 규칙이 변화할 때 응용 프로그램을 수정하는 작업량이 매우 크다(수정, 발행과 설치 응용 프로그램).
만약에 기업 규칙을 나타내는 연산을 저장 과정에 넣으면 기업 규칙이 변화할 때 저장 과정을 수정하면 되고 응용 프로그램은 어떠한 변화도 필요 없다.
[저장 프로세스의 장점 요약]
1. 실행 속도가 더 빠르다 - 데이터베이스에 저장된 저장 프로세스 문장은 모두 컴파일된 것이다
2. 모듈식 프로그램 설계 허용 – 유사한 방법의 재사용
3. 시스템 보안 강화 – SQL 유입 방지
4. 네트워크 유통량 감소 – 전송 저장 프로세스의 이름만
5. 저장 프로세스의 결점
① 디버깅은 번거롭지만 PL/SQL Developer 디버깅은 편리합니다!이 결점을 보완하다.
② 이식 문제, 데이터베이스 측 코드는 당연히 데이터베이스와 관련된 것이다.하지만 공사형 프로젝트라면 이식 문제는 거의 없다.
③ 백엔드 코드는 실행 전에 컴파일된 것이기 때문에 인용 관계를 가진 대상이 바뀔 때 영향을 받는 저장 프로세스, 패키지는 다시 컴파일해야 한다(단, 실행 시간에 자동으로 컴파일하도록 설정할 수도 있다).
④ 만약에 한 프로그램 시스템에서 저장 프로세스를 대량으로 사용한다면 프로그램을 납품하고 사용할 때 사용자의 수요가 증가함에 따라 데이터 구조의 변화를 초래할 수 있다. 그 다음은 시스템과 관련된 문제이다. 마지막으로 만약에 사용자가 이 시스템을 유지하고 싶다면 매우 어렵고 대가가 전무후무하여 유지하기가 더욱 번거롭다고 할 수 있다.
6. 저장 프로세스의 종류
①시스템 저장 프로세스: sp로 시작하여 시스템의 각종 설정을 진행한다.정보를 얻다.관련 관리 업무.
② 로컬 저장 프로세스: 사용자가 만든 저장 프로세스는 일반적으로 usp로 시작하여 사용자가 특정한 기능을 만들고 완성하는 저장 프로세스이다. 사실상 일반적으로 말하는 저장 프로세스는 로컬 저장 프로세스를 가리킨다.
③ 임시 저장 프로세스: 두 가지 저장 프로세스로 나뉜다.
첫째, 로컬 임시 저장 프로세스는 우물 번호(#)를 이름의 첫 번째 문자로 하고 이 저장 프로세스는tempdb 데이터베이스에 저장된 로컬 임시 저장 프로세스가 되며 이를 만든 사용자만 실행할 수 있다.
둘째, 전역 임시 저장 프로세스는 두 개의 우물 번호(##) 번호로 시작하면 이 저장 프로세스는tempdb 데이터베이스에 저장된 전역 임시 저장 프로세스가 될 것이다. 전역 임시 저장 프로세스가 만들어지면 서버에 연결된 모든 사용자가 실행할 수 있고 특정한 권한이 필요하지 않다.
④ 원격 저장 프로세스: SQL Server 2005에서 원격 저장 프로세스(Remote Stored Procedures)는 원격 서버에 있는 저장 프로세스로 분포식 조회와 EXECUTE 명령을 사용하여 원격 저장 프로세스를 수행할 수 있다.
⑤ 확장 저장 프로세스: 확장 저장 프로세스(Extended Stored Procedures)는 사용자가 외부 프로그램 언어로 작성할 수 있는 저장 프로세스이며, 확장 저장 프로세스의 이름은 보통 xp첫머리
7. 저장 프로세스 문법 정의
"[]"안의 내용은 옵션을 나타냅니다.
create proc      
@  1             [=   ] [output],
@  2             [=   ] [output],
...
as
SQL  

8. 저장 프로세스 예
1. 저장 프로세스를 정의한다.
create proc usp_StudentByGenderAge @gender nvarchar(10) [=' '], @age int [=30] as select * from MyStudent where FGender=@gender and FAge=@age

2. 저장 프로세스를 실행한다.
Situation One(       ):
exec usp_StudentByGenderAge

Situation Two(         ):
exec usp_StudentByGenderAge ' ',50

        exec usp_StudentByGenderAge @age=50,@gender=' '

3. 저장 프로세스를 수정한다.
alter proc usp_StudentByGenderAge @gender nvarchar(10) [=' '], @age int [=30], -- output                     @recorderCount int output as select * from MyStudent where FGender=@gender and FAge=@age set @recorderCount=(select count(*) from MyStudent where FGender=@gender and FAge=@age)

-output 매개 변수의 목적은 호출자가 하나의 변수를 전달하고 저장 과정에서 이 변수를 위해 값을 부여하는 작업을 완성하는 것이다. 저장 과정의 실행이 끝난 후에 실행된 대응 결과를 전달된 변수에 되돌려주는 것이다.(C#의 out 방식과 동일)
호출(여기 문법 기억해!)이 저장 프로세스 앞에 다른 매개 변수가 있기 때문에 @recorderCount를 써야 합니다. 이 저장 프로세스가 실행된 후, 상기 조회 작업을 완성한 것과 같으며, 조회 결과에서 얻은 항목의 값을 @count 변수에 부여합니다.(@count는 usp StudentByGenderAge에 매개 변수로 전송되며 저장 프로세스가 끝난 후 받은 항목을 @count에 되돌려줍니다)
declare @count int
exec usp_StudentByGenderAge @recorderCount=@count output
print @count

좋은 웹페이지 즐겨찾기