sql 저장 프로시저 학습 실례

무엇이 저장 과정 입 니까?
정의:
자주 사용 되 거나 복잡 한 작업 을 SQL 문 구 를 미리 작성 하고 지정 한 이름 으로 저장 합 니 다. 그러면 나중에 데이터베이스 에 정 의 된 저장 프로 세 스 와 같은 기능 을 제공 하 는 서 비 스 를 제공 하려 면 execute 를 호출 하면 자동 으로 명령 을 완성 할 수 있 습 니 다.
여기까지 말 하면 저장 과정 이 한 무더기 라 고 물 어 볼 수도 있다.
SQL
문구 일 뿐 인 데?
Microsoft 회 사 는 왜 이 기술 을 추가 하려 고 합 니까?
그렇다면 저장 과정 은 일반적인 SQL 문장 과 어떤 차이 가 있 습 니까?
저장 프로시저 의 장점:
1. 저장 프로 세 스 는 만 들 때 만 컴 파일 하고 나중에 저장 프로 세 스 를 실행 할 때마다 다시 컴 파일 하지 않 아 도 됩 니 다. 보통 입 니 다.
SQL
문장 은 실행 할 때마다 한 번 씩 컴 파일 되 기 때문에 저장 과정 을 사용 하면 데이터베이스 실행 속 도 를 높 일 수 있다.
2. 데이터 베 이 스 를 복잡 하 게 조작 할 때 (예 를 들 어 여러 표 에 대해 Update, Insert, Query, Delete 를 할 때) 이 복잡 한 조작 을 저장 과정 으로 패키지 하여 데이터 베이스 가 제공 하 는 사무 처리 와 결합 하여 사용 할 수 있 습 니 다.
3. 저장 과정 을 중복 사용 할 수 있 고 데이터베이스 개발 자의 업 무량 을 줄 일 수 있다.
4. 안전성 이 높 고 이 사용자 만 지정 한 저장 과정 에 대한 사용권 을 설정 할 수 있 습 니 다.
저장 프로시저 종류:
1. 시스템 저장 과정: sp 로 시작 하여 시스템 의 각종 설정 을 하고 정 보 를 얻 습 니 다. 관련 관리 업무, 예 를 들 어 sp help 는 지정 한 대상 의 관련 정 보 를 얻 는 것 입 니 다.
2. 확장 저장 프로 세 스 는 XP 로 시작 하여 운영 체제 가 제공 하 는 기능 을 호출 합 니 다.
  exec master..xp_cmdshell 'ping 10.8.16.1'
3. 사용자 정의 저장 프로 세 스, 이것 은 우리 가 가리 키 는 저장 프로 세 스
상용 형식Create procedure procedue_name
[@parameter data_type][output]
[with]{recompile|encryption}
as
ql_statement

설명:
output: 이 매개 변 수 는 되 돌 릴 수 있 음 을 표시 합 니 다.
  with {recompile|encryption}
recompile: 이 저장 과정 을 실행 할 때마다 다시 컴 파일 한 다 는 뜻 입 니 다.
encryption: 만 든 저장 과정의 내용 이 암호 화 됩 니 다.
예:
표 북 의 내용 은 다음 과 같다.
001 C $30
002 PowerBuilder $52

실례 1: 테이블 북 의 내용 을 조회 하 는 저장 과정create proc query_book
as
select * from book
go
exec query_book

인 스 턴 스 2: 표 북 에 기록 하고 이 표 의 모든 책의 총 금액 을 조회 합 니 다.Create proc insert_book
@param1 char(10),@param2 varchar(20),@param3 money,@param4 money output
with encryption ---------
as
insert book( , , ) Values(@param1,@param2,@param3)
select @param4=sum( ) from book
go

실행 예:declare @total_price money
exec insert_book '003','Delphi ',$100,@total_price
print ' '+convert(varchar,@total_price)
go

저장 프로시저 의 3 가지 전송 값:
1. Return 으로 정수 되 돌리 기
2. output 형식 으로 매개 변 수 를 전송 합 니 다.
  3.Recordset
전송 값 의 차이:
output 와 return 은 일괄 프로그램 에서 변수 로 받 을 수 있 으 며, recordset 는 일괄 을 실행 하 는 클 라 이언 트 로 전 송 됩 니 다.
실례 3: 두 개의 표 가 제품, Order 로 설치 되 어 있 는데 그 표 의 내용 은 다음 과 같다.Product

001 30
002 50
003 100
Order

001 $30
002 $50
003 $4

번호 에 따라 연결 조건 으로 두 개의 시 계 를 하나의 임시 표 로 연결 하 십시오. 이 시 계 는 번호, 제품 명, 고객 명, 계약금, 총 금액 만 포함 합 니 다.
총 금액 = 계약금 * 정수, 임시 표 는 저장 과정 에 둔다.
코드 는 다음 과 같 습 니 다:Create proc temp_sale
as
select a. ,a. ,b. ,b. ,a. * b. as
into #temptable from Product a inner join Order b on a. =b.
if @@error=0
print 'Good'
else
print 'Fail'
go

좋은 웹페이지 즐겨찾기