기계실 재구성 - 저장 프로세스

3573 단어
기방 재구성 과정에서 7층의 주선이 이해된 후에 대량의 코드를 두드리는 과정이 남았다. 이 과정은 의심할 여지없이 무미건조하기 때문에 기방에서 새로운 것을 시도할 필요가 있다. 예를 들어 저장 과정이다.
그러면 저장 프로세스는 무엇입니까?
저장 프로세스는 서버에 저장된 미리 컴파일된 SQL 문장으로 처음 실행할 때 문장 검사와 컴파일을 하고 컴파일된 저장 프로세스는 고속 캐시에서 후속 호출에 사용된다. 그러면 저장 프로세스를 더욱 신속하고 효율적으로 실행할 수 있다.저장 프로세스는 입력과 출력의 매개 변수를 가지고 있을 수 있다.
자신의 간단한 이해는 실행할 SQL 문장을 데이터베이스에 써서 사용할 때 직접 호출하면 OK라는 것이다.
스토리지 프로세스의 이점은 무엇입니까?
1. 복용성이 강하다.저장 프로세스는 중복 사용이 가능하여 데이터베이스 개발의 작업량을 줄일 수 있다.
2. 집행 효율을 높인다.저장 프로세스는 만들 때 컴파일된 후에 실행할 때마다 다시 컴파일할 필요가 없고 실행할 때 일반 SQL 문장보다 빠르고 효율을 높인다.
3. 네트워크 트래픽 감소저장 프로세스는 서버에 위치하고 호출할 때 저장 프로세스의 이름과 파라미터만 전달하면 되기 때문에 네트워크 전송의 데이터 양을 낮출 수 있다.
4. 더욱 안전하다.매개 변수화된 조회 과정은 SQL 주입 공격을 방지할 수 있다.
어떻게 만듭니까?
다음 그림은 데이터베이스의 프로그래밍 가능성에서 저장 프로세스를 찾은 다음 새로 만들기를 우클릭하십시오
어떻게 씁니까?
저장 프로세스의 경우 매개변수 및 SQL 문을 씁니다.
USE [chargejf]
GO
/****** Object:  StoredProcedure [dbo].[PRO_GroupParent]    Script Date: 2016/3/5 16:48:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[PRO_GroupParent]
(@CmbName1 varchar(50),
@CmbMark1 varchar(50),
@txtContent1 varchar(50),
@CmbRelation1 varchar(50),
@CmbName2 varchar(50),
@CmbMark2 varchar(50),
@txtContent2 varchar(50),
@CmbRelation2 varchar(50),
@CmbName3 varchar(50),
@CmbMark3 varchar(50),
@txtContent3 varchar(50),
@tableName varchar(50))
AS
declare @TempSQL varchar(2000)
BEGIN
	SET @TempSQL = 'select * from ' +@tableName + ' where' +@CmbName1 +@CmbMark1 +char(39) +@txtContent1 +char(39) 
	if @CmbRelation1 != '' 
	BEGIN
		SET @TempSQL =@TempSQL +@CmbRelation1 +CHAR(32)+@CmbName2 +@CmbMark2 +CHAR(39) +@txtContent2 +CHAR(39) 
		if (@CmbRelation2 is not null)
		BEGIN
			SET @TempSQL =@TempSQL +@CmbRelation2 +CHAR(32)+@CmbName3 +@CmbMark3 +CHAR(39) +@txtContent3 +CHAR(39)
		END
	END
EXECUTE(@TempSQL)
END
     
D-레이어 호출
Dim cmdText As String
        Dim table As DataTable
        Dim sqlParams As SqlParameter() = {New SqlParameter("@CmbName1", Groupcheck.CmbName1),
                                           New SqlParameter("@CmbName2", Groupcheck.CmbName2),
                                           New SqlParameter("@CmbName3", Groupcheck.CmbName3),
                                           New SqlParameter("@CmbMark1", Groupcheck.CmbMark1),
                                           New SqlParameter("@CmbMark2", Groupcheck.CmbMark2),
                                           New SqlParameter("@CmbMark3", Groupcheck.CmbMark3),
                                           New SqlParameter("@txtContent1", Groupcheck.TxtContent1),
                                           New SqlParameter("@txtContent2", Groupcheck.TxtContent2),
                                           New SqlParameter("@txtContent3", Groupcheck.TxtContent3),
                                           New SqlParameter("@CmbRelation1", Groupcheck.CmbRelation1),
                                           New SqlParameter("@CmbRelation2", Groupcheck.CmbRelation2),
                                           New SqlParameter("@tableName", Groupcheck.DbName)}
        cmdText = "PRO_GroupParent"
        table = sqlHelper.ExecSelect(cmdText, CommandType.StoredProcedure, sqlParams)
        Return table
         
이전에 그룹 조회를 쓴 블로그가 있는데 비교해 보면 저장 과정의 사용은 SQL 문장을 데이터베이스에 옮긴 것에 불과하다. 사용할 때 호출을 하고 추가, 삭제, 수정을 하는 일련의 조작을 해서 실행 효율과 코드 복용을 향상시킨다. 그리 어렵지 않다. 그러므로 사람은 게으름에 놀라지 마라. 스스로에게 경고한다.

좋은 웹페이지 즐겨찾기