기관실 요금 - 저장 프로세스 + 사무

4960 단어 VB.NET
데이터베이스에 있을 때부터 저장 과정과 사무에 대해 기본적으로 알고 있었지만 실전한 적이 없어요. 이번 기방 재구축에 기회가 생겨서 정말 좋아요. 자, 쓸데없는 말은 하지 말고 어떻게 사용하는지 알아봅시다.
1. 저장 프로세스
1. 정의:
저장 프로세스는 대형 데이터베이스 시스템에서 특정 기능을 완성하기 위한 SQL 문장 집합을 데이터베이스에 저장하고 첫 번째 컴파일을 거친 후에 다시 호출하여 다시 컴파일할 필요가 없다. 사용자는 저장 프로세스의 이름을 지정하고 파라미터를 제시한다(이 저장 프로세스에 파라미터가 있다면).저장 프로세스는 데이터베이스 중의 중요한 대상으로 어떤 디자인이 좋은 데이터베이스 응용 프로그램이든 저장 프로세스를 사용해야 한다.
2. 사용:
(1) 저장 프로세스 생성
create procedure sp_name
@[   ] [  ],@[   ] [  ]
as
begin
.........
end
(2) 메모리 프로세스 호출
    :exec sp_name [   ]
(3) 스토리지 프로세스 제거
1. 기본 문법:
drop procedure sp_name
2.주의 사항
(1) 한 저장 과정 중 다른 저장 프로세스를 삭제할 수 없고 다른 저장 프로세스만 호출할 수 있다.
3. 장단점:
이점:
(1) 중복 사용;(2) 네트워크 데이터 감소;(3) 안전성.
단점:
(1) 디버깅이 번거롭다(2) 이식 문제, 데이터베이스 쪽 코드는 당연히 데이터베이스와 관련이 있다.하지만 공사형 프로젝트라면 이식 문제는 거의 없다.(3) 백엔드 코드는 실행 전에 컴파일된 것이기 때문에 인용 관계를 가진 대상이 바뀔 때 영향을 받은 저장 프로세스, 패키지는 다시 컴파일해야 한다.(4) 만약에 한 프로그램 시스템에서 저장 프로세스를 대량으로 사용한다면 프로그램이 납품될 때 사용자의 수요가 증가함에 따라 데이터 구조의 변화를 초래할 수 있다. 그 다음은 시스템과 관련된 문제이다. 마지막으로 사용자가 이 시스템을 유지하려면 매우 어렵고 대가가 전무후무하기 때문에 유지하기가 더욱 번거롭다고 할 수 있다.
사무
정의:
사무는 일반적으로 해야 할 일이나 해야 할 일을 가리킨다.컴퓨터 용어로는 데이터베이스에 있는 각종 데이터 항목을 방문하고 업데이트할 수 있는 프로그램 실행 단원(unit)을 가리킨다.관계 데이터베이스에서 하나의 업무는 하나의 SQL 문장, 하나의 그룹의 SQL 문장 또는 전체 프로그램이 될 수 있다.
사무는 원자성, 일치성, 격리성, 지속성 등 네 가지 속성을 가져야 한다.이러한 네 가지 속성을 일반적으로 ACID 특성이라고 합니다.
3. 저장 프로세스 + 사무 실현 등록:
ALTER PROCEDURE [dbo].[PROC_Regist] 
-- Add the parameters for the stored procedure here
    @Cardno char(10),
    @StudentNo char(10),
    @Cash varchar(50),
    @Type char(50),
    @Status char(50),
    @registDate char(10),
    @registTime char(10),
    @Holder char(10),
    @StudentName char(10),
    @Sex char(10),
    @Department char(10),
    @Grade char(10),
    @onClass char(10),
    @reDate char(10),
    @reTime char(10),
    @AddMoney char(10),
    @reHolder char(10)
AS
BEGIN
    DECLARE @Err1   INT,@Err2   INT,@Err3	INT--        
    BEGIN TRANSACTION--    
    --    
    insert into T_CardInfo (Cardno ,Cash,Type,Status ,registDate ,registTime ,Holder) values (@Cardno,@Cash,@Type,@Status,@registDate ,@registTime ,@Holder)
    set @err1=@@error--          ,    0
    --     
    insert into T_StudentInfo (Cardno,StudentNo,StudentName ,Sex,Department ,Grade,onClass,Holder)values (@Cardno,@StudentNo,@StudentName,@Sex,@Department ,@Grade,@onClass,@Holder)
    set @Err2=@@error--          ,    0
    --        
    insert into T_RechargeInfo (Cardno,AddMoney,ReDate,ReTime,Status,reHolder)values (@cardno,@reDate,@reTime,@AddMoney,@Status,@reHolder)
    set @err3=@@ERROR--          ,    0
    
    if @Err1=0 and @Err2=0 and @err3=0--             0
	COMMIT TRANSACTION--    
    ELSE
	ROLLBACK TRANSACTION--  ,      
END

D-레이어 코드 표시:
        Dim sql As String = "PROC_Regist" '         
        Dim sqlparams As SqlParameter() = {New SqlParameter("@Cardno", e_stucard.Cardno),
                                           New SqlParameter("@Type", e_stucard.Type),
                                           New SqlParameter("@Status", e_stucard.Status),
                                           New SqlParameter("@Holder", e_stucard.Holder),
                                           New SqlParameter("@StudentNo", e_stucard.Studentno),
                                           New SqlParameter("@StudentName", e_stucard.StudentName),
                                           New SqlParameter("@Grade", e_stucard.Grade),
                                           New SqlParameter("@Department", e_stucard.Department),
                                           New SqlParameter("@onClass", e_stucard.onClass),
                                           New SqlParameter("@Sex", e_stucard.Sex),
                                           New SqlParameter("@registDate", e_stucard.registDate),
                                           New SqlParameter("@registTime", e_stucard.registTime),
                                           New SqlParameter("@reDate", e_recharge.reDate),
                                           New SqlParameter("@reTime", e_recharge.reTime),
                                           New SqlParameter("@Cash", e_stucard.Cash),
                                           New SqlParameter("@AddMoney", e_recharge.AddMoney),
                                           New SqlParameter("@reHolder", e_recharge.reHolder)}
        Dim flag As Boolean
        flag = sqlhelper.ExecAddDelUpdate(sql, CommandType.StoredProcedure, sqlparams)
        Return flag

4. 총결산
저장 프로세스를 사용할 때 많은 문제에 부딪혔지만 모두 순조롭게 해결되었다. 많은 세부적인 문제가 있다. 깨달음은 코드를 두드리는 데 머리를 써야 하고 세심하고 진지해야 한다는 것이다. 그렇지 않으면 작은 실수로 인해 우리는 많은 시간을 잃게 될 것이다.

좋은 웹페이지 즐겨찾기