저장 프로시저란 무엇입니까?
정의:
자주 사용하는 작업이나 매우 복잡한 작업을 미리 SQL 문으로 작성해 지정한 이름으로 저장한 뒤, 나중에 정의된 저장 프로시저와 동일한 기능을 데이터베이스에 요청하고 싶을 때 실행만 호출하면 된다. . 자동 완성 명령.
이 시점에서 누군가는 다음과 같이 질문할 수 있습니다. 그러면 저장 프로시저가 단지 SQL 문 묶음에 불과합니까?
Microsoft가 이 기술을 추가하려는 이유는 무엇입니까?
그렇다면 저장 프로시저와 일반 SQL 문의 차이점은 무엇입니까?
저장 프로시저의 장점:
1. 저장 프로시저는 생성될 때만 컴파일되므로 나중에 저장 프로시저를 실행할 때마다 다시 컴파일할 필요가 없습니다. 일반적으로 SQL 문은 실행될 때마다 한 번씩 컴파일되므로 저장 프로시저를 사용하면 실행 성능이 향상됩니다. 데이터베이스 속도.
2. 데이터베이스에서 복잡한 작업(여러 테이블에 대한 업데이트, 삽입, 쿼리, 삭제 등)을 수행할 때 이 복잡한 작업은 저장 프로시저에 캡슐화되어 데이터베이스에서 제공하는 트랜잭션 처리와 함께 사용될 수 있습니다.
3. 저장 프로시저를 재사용할 수 있어 데이터베이스 개발자의 작업량을 줄일 수 있습니다.
4. 높은 보안성, 특정 사용자만 지정된 저장 프로세스를 사용할 수 있는 권한을 갖도록 설정할 수 있습니다.
저장 프로시저 유형:
1. 시스템 저장 프로시저: sp_로 시작하여 시스템을 설정하고 정보를 얻는 데 사용되며, 특정 개체에 대한 관련 정보를 얻는 데 사용되는 sp_help와 같은 관련 관리 작업도 수행됩니다.
2. 확장 저장 프로시저는 XP_로 시작하며 운영체제에서 제공하는 함수를 호출하는 데 사용됩니다.
exec master..xp_cmdshell 'ping 10.8.16.1'
3. 사용자 정의 저장 프로시저, 이를 저장 프로시저라고 합니다.
일반적인 형식
프로시저 생성 프로시저_name
[@parameter data_type][출력]
[사용]{재컴파일|암호화}
~처럼
ql_statement
설명하다:
출력: 이 매개변수가 반환될 수 있음을 나타냅니다.
{재컴파일|암호화} 사용
recompile: 이 저장 프로시저가 실행될 때마다 다시 컴파일됨을 의미합니다.
암호화: 생성된 저장 프로시저의 내용이 암호화됩니다.
좋다:
테이블북의 내용은 다음과 같습니다
번호가 매겨진 책 제목 가격
001 C 언어 입문$30
002 PowerBuilder 보고서 개발$52
예제 1: Book 테이블의 내용을 쿼리하는 저장 프로시저
proc query_book 생성
~처럼
책에서 *를 선택하세요
가다
쿼리_북 실행
예 2: book 테이블에 레코드를 추가하고 이 테이블에 있는 모든 책의 총 금액을 쿼리합니다.
proc insert_book 생성
@param1 char(10),@param2 varchar(20),@param3 돈,@param4 돈 출력
암호화 ----------암호화
~처럼
책 삽입(번호, 책 제목, 가격) 값(@param1,@param2,@param3)
책에서 @param4=sum(price)를 선택하세요.
가다
실행 예:
@total_price 돈 선언
exec insert_book '003','델파이 컨트롤 개발 가이드',$100,@total_price
print '총액은'+convert(varchar,@total_price)
가다
저장 프로시저의 세 가지 유형의 반환 값:
1. Return을 사용하여 정수를 반환합니다.
2. 출력 형식으로 매개변수를 반환합니다.
3. 레코드셋
반환된 값의 차이점은 다음과 같습니다.
출력과 반환 모두 일괄 프로그램에서 변수로 수신될 수 있으며 레코드 집합은 일괄 처리를 실행하는 클라이언트로 다시 전달됩니다.
예 3: 다음 테이블 내용을 포함하는 Product 및 Order라는 두 개의 테이블이 있습니다.
제품
제품번호 제품명 고객 주문 수량
001 펜 30
002 브러쉬 50
003 연필 100
주문하다
상품번호 고객명 고객예치금
001 난산구$30
002 뤄후구$50
003 바오안구$4
두 테이블을 임시 테이블로 연결하려면 숫자를 사용하세요. 이 테이블에는 고객 이름만 포함됩니다.
총 금액 = 예금 * 주문 수량, 임시 테이블은 저장 프로세스에 배치됩니다.
코드는 다음과 같습니다:
임시 판매 프로세스 생성
~처럼
a.제품번호,a.제품명,b.고객명,b.고객 예치금,a.고객 주문 수량* b.고객 예치금을 총 금액으로 선택합니다.
a.제품 번호=b.제품 번호의 제품 a 내부 조인 주문 b에서 #temptable로
@@error=0인 경우
'좋아요'를 인쇄하세요.
또 다른
'실패'를 인쇄