T-Sql(3) 저장 프로세스(Procedure)

8044 단어 procedure
오늘 T-sql 문법에서 저장 과정의 용법을 설명하자면 우리가 데이터베이스 언어를 처음 배울 때 간단한 insert,select 등 문법을 사용했다. 그러나 우리가 데이터베이스를 깊이 배우면서 간단한 문법이 우리의 요구를 만족시키지 못한다는 것을 알 수 있다. 예를 들어 업무 논리를 처리하고 여러 표와 관련될 때, 그리고 프로그램이나 간단한 sql 문장도 그 효과를 실현할 수 있다.하지만 성능이나 효율은 떨어진다.
이때 우리는 T-sql의 저장 프로세스를 사용한다. 저장 프로세스는 C#의 방법처럼 매개 변수를 전달하고 일부 조작을 실행하여 해당하는 값을 되돌려준다.
SQLSERVER2008 자체 AdventureWorks 샘플 데이터베이스로 설명합니다.
먼저 다음 예제 코드의 Procedure 키워드가 포함된 스토리지 프로세스를 새로 만듭니다.
create procedure proc_Sales_SalesReason
as
begin
    select * from Sales.SalesReason;
end

우리가 새로 만든 프로크Sales_SalesReason Storage Process, 쿼리 작업 수행, 일반 Storage Process 이름 proc +명칭, 이렇게 하면 식별에 유리하다.
스토리지 프로세스 예제 코드를 실행합니다.
execute proc_Sales_SalesReason

drop procedure  proc_Sales_SalesReason    --      

저장 프로세스를 수정하려면alter 키워드를 사용하십시오.
이상은 단순한 저장 프로세스일 뿐입니다. 파라미터가 없는 방법과 같이 다음은 파라미터가 있는 예시 코드입니다.
create procedure proc_Sales_SalesReason
(@SalesReasonID int, 
@Name nvarchar(50), 
@ReasonType nvarchar(50), 
@ModifiedDate datetime)
as
begin
    insert into Sales.SalesReason(SalesReasonID, Name, ReasonType, ModifiedDate) 
    values(@SalesReasonID, @Name, @ReasonType, @ModifiedDate);
end

이것은 데이터를 삽입하는 저장 프로세스를 실행하고 예시 코드를 실행합니다.
execute proc_Sales_SalesReason 100,'text1','as','2011-12-12';

위에서 설명한 것은 모두 간단한 저장 과정의 용법이다. 여기서 벽돌을 던져 옥을 끌어당기는 역할만 할 뿐이다. 모두들 시간을 내서 잘 연구하고 복잡한 업무 논리를 처리할 수 있다.
다음은 내가 작은 예시를 하나 만들었다
select: 가격 범위에 따라 요구 사항을 조회합니다. 만약 두 파라미터가 모두 존재한다면 이 지정된 범위의 내용을 조회하는 것을 의미합니다.존재하지 않으면 @PriceFrom 매개 변수가 존재하면, 검색 > = @PriceFrom @priceTo가 존재하고, <=@priceTo
create procedure proc_SelectProductsWithPriceRange
(
    @PriceFrom money,
    @priceTo money
)
as 
begin
    if @PriceFrom is not null
        begin
            if @priceTo is not null
                begin
                    select *from dbo.Products 
                    where Price between @PriceFrom and @priceTo;
                end
            else
                begin
                    select *from dbo.Products 
                    where Price>=@PriceFrom;
                end
        end;
    else
        begin
            if @priceTo is not null
                begin
                    select *from dbo.Products 
                    where Price<=@priceTo;
                end
            else
                begin
                    select *from dbo.Products 
                end
        end    
end;

스토리지 프로세스를 실행하려면 다음과 같이 하십시오.
execute proc_SelectProductsWithPriceRange 17,null

사실 이 코드들은 모두 대학 때 공부할 때 정리한 것입니다. 지금 이런 것들을 쓰는 것은 복습을 하는 셈이고 프로그래밍 업계에 막 발을 들여놓은 학생들(소들이 지나가세요)도 도와주고 싶습니다. 저는 2년 전에 정리한 프로그래밍 지식 시스템을 정리하고 싶습니다. 물론 모두 간단한 것입니다. 그리고 예시를 첨부하여 초보자들이 이해하도록 도와주고 여러분의 관심을 바랍니다.

좋은 웹페이지 즐겨찾기