권장 : ASP 3.0 고급 프로그래밍 (12) 4.2.3 서버 측면 포함 지침의 예이 섹션에서는 다양한 서버 측문이 포함 된 문을 실험하는 데 사용할 수있는 몇 가지 예제 페이지를 제공합니다. SSI 지시문 및 ASP 서버 개체를 표시하는 샘플 웹 페이지의 하위 디렉토리를 열어
9.2.3 저장 절차저장된 절차의 사용은 명령 개체가 적용되는 영역입니다. 저장 프로 시저 (때로는 스토리지 쿼리라고도 함)는 데이터베이스에서 사전 정의 된 SQL 쿼리 문입니다.
코드에서 직접 SQL 문자열을 사용하는 대신 저장 프로 시저를 작성하고 사용해야하는 이유는 무엇입니까? 몇 가지 주요 이유가 있습니다.
· 저장된 절차는 데이터베이스에 의해 컴파일되었습니다. 이로 인해 실행 계획이 발생하므로 데이터베이스는 수행 할 작업을 정확히 알고 프로세스 실행 속도를 높입니다.
저장된 절차는 일반적으로 데이터베이스에 의해 캐싱되므로 현재 디스크에서 읽을 필요가 없기 때문에 더 빨리 실행됩니다. 모든 데이터베이스 가이 캐싱 메커니즘을 지원하는 것은 아닙니다. 예를 들어, Microsoft의 액세스는이를 지원하지 않지만 SQL Server는 지원합니다.
· 데이터베이스의 테이블을 저장 프로 시저로만 수정할 수 있음을 지정하면 데이터가보다 안전하게 보장 될 수 있습니다. 이는 잠재적으로 위험한 SQL 작업이 수행되지 않음을 의미합니다.
· ASP 코드는 긴 SQL 문과 믹싱을 피할 수 있으므로 ASP 코드를 더 쉽게 유지 관리 할 수 있습니다.
· 모든 SQL 코드는 서버에 중앙에 저장 될 수 있습니다.
· 출력 매개 변수는 저장 절차에 사용하여 레코드 세트 또는 기타 값을 반환 할 수 있습니다.
일반적으로 저장된 절차는 비슷한 SQL 문보다 거의 항상 빠릅니다.
저장된 절차를 사용하려면 저장된 절차 이름을 명령 텍스트로 사용하고 해당 유형을 설정하십시오. 예를 들어, 업데이트 된 책 가격의 이전 예를 고려하십시오. SQL Server에서 저장된 프로 시저를 작성하면 코드를 작성할 수 있습니다.
프로 시저를 만듭니다. USP_UPDATEPRICES
처럼
제목을 업데이트하십시오
Set Price = Price * 1.10
여기서 유형 = '비즈니스'
Microsoft의 액세스 데이터베이스의 경우 간단한 업데이트 쿼리 문을 사용하여 동일한 작업을 수행 할 수 있습니다.
ASP 웹 페이지 에서이 저장된 프로 시저를 실행하려면 다음 코드 만 사용하십시오.
cmdupdate = server.createobject (adodb.command)를 설정하십시오.
cmdupdate.activeConnection = strconn
cmdupdate.commandText = usp_updatePrices
cmdupdate.commandtype = adcmdstoredproc
cmdupdate.execute ,, adexecutenorecords
이것은 저장된 절차를 실행하는 것입니다. 데이터가 업데이트되었으므로 레코드 세트가 반환되지 않습니다. 실제로 필요하지 않으면 레코드 세트를 만들지 않는다는 것을 기억하는 것이 중요합니다.
이것은 괜찮지 만, 한 유형의 책 만 다루기 때문에 매우 유연하지 않습니다. 더 나은 접근 방식은 각 유형의 책에 대한 프로세스를 만들 필요가 없도록 책 유형을 선택할 수있는 프로세스를 만드는 것입니다. 또한 고정 된 10% 업데이트를 제거하여 유연성을 향상시킬 수 있습니다. 그래서 어떻게 할 수 있습니까? 매우 간단합니다. 매개 변수를 사용하십시오.
1. 매개 변수
저장된 절차의 매개 변수 (또는 변수)는 일반 절차 및 기능의 매개 변수와 동일합니다. 함수로 전달 될 수 있으며 함수는 그 값을 사용할 수 있습니다. SQL Server에 저장된 절차 (액세스를 포함한 다른 데이터베이스에 대해서도 마찬가지).이 기능이 있습니다.
저장된 절차가 여러 유형의 책을 처리하고 사용자가 가격 인상 (또는 감소)을 지정할 수 있도록 일부 매개 변수를 추가해야합니다.
프로 시저를 만듭니다. USP_UPDATEPRICES
@type char (12),
@Percent Money
처럼
제목을 업데이트하십시오
set price = price * (1 @percent / 100)
여기서 type = @type
이제 저장된 프로 시저 USP_UPDATEPRICES는 두 가지 매개 변수를 사용합니다.
· 하나는 책 유형 (@type)입니다.
· 하나는 장부 가격 변동의 백분율 (@percent)입니다.
vbscript의 함수와 마찬가지로 이러한 매개 변수는 변수입니다. 그러나 vbscript 및 기타 스크립팅 언어와 달리 이러한 스크립팅 언어의 변수는 모두 변수 유형이며 SQL 변수에는 명확한 유형 (숯, 돈 등)이 있습니다. SQL 변수의 이름 지정 사양은 따라야합니다. 즉, 변수는 @기호로 시작해야합니다.
우리는 부분적 값이 아닌 정수 (예 : 10 평균 10%) 로이 프로세스에 전달되는 백분율이 있습니다. 이것은 저장 절차를 좀 더 직관적으로 만듭니다.
2. 매개 변수 수집
이제 매개 변수가있는 저장된 절차가 있지만 Ado를 통해 어떻게 호출합니까? 우리는 명령 개체가있는 매개 변수없이 저장 프로 시저를 호출하는 방법을 보았으며 실제로는 차이가 없습니다. 차이점은 매개 변수 컬렉션의 사용입니다.
매개 변수 모음에는 저장 프로 시저에서 각 매개 변수에 대한 매개 변수 개체가 포함됩니다. 그러나 ADO는 이러한 매개 변수가 무엇인지 자동으로 알지 못하므로 CreateParameter 방법을 사용하여 다음 형식으로 작성해야합니다.
set parameter = command.createParameter (이름, [type], [direction], [size], [value])
매개 변수와 설명은 표 9-3에 나와 있습니다.
CreateParameter 방법의 표 9-3 매개 변수 및 설명
매개 변수
설명
이름
매개 변수 이름. 이것은 저장 프로 시저의 매개 변수 이름이 아닌 매개 변수 모음의 매개 변수 이름입니다. 그러나 같은 이름을 사용하는 것이 좋습니다
유형
매개 변수의 데이터 유형. Addatatype 상수 일 수 있습니다. 자세한 내용은 부록을 참조하십시오.
방향
매개 변수의 방향은 매개 변수가 저장 프로 시저에 정보를 제공하는지 또는 저장된 절차가 정보를 ADO에 반환하는지 여부를 나타냅니다. 다음 값 중 하나 일 수 있습니다.
Adparaminput, 매개 변수는 저장 프로 시저에 전달 된 입력 매개 변수입니다.
Adparamoutput, 매개 변수는 저장 프로 시저에서 검색된 출력 매개 변수입니다.
adparaminputoutput, 매개 변수는 입력 및 출력 매개 변수로 사용할 수 있습니다.
adparamreturnvalue,이 매개 변수는 저장된 절차에 의해 반환 된 상태를 포함합니다.
크기
매개 변수 길이. 정수와 같은 고정 길이 유형의 경우이 값을 무시할 수 있습니다.
값
매개 변수의 가치
매개 변수가 생성되면 매개 변수 수집에 추가 될 수 있습니다.
parvalue = cmdupdate.createparameter (@type, advarwchar, adparaminput, _
12, 사업)
cmdupdate.parameters.pend 앵무새
parvalue = cmdupdate.createparameter (@percent, adcurrency, _
Adparaminput ,, 10)
cmdupdate.parameters.pend 앵무새
매개 변수를 저장하기 위해 객체를 명시 적으로 만들 필요가 없으며 기본 변형 유형이 이미 잘 작동 할 수 있습니다. 변수를 생성하지 않으려면 다음 코드와 같은 바로 가기를 할 수도 있습니다.
cmdupdate.parameters.append = _
cmdupdate.createParameter (@percent, adcurrency, adparaminput ,, 10)
CreateParameter 메소드를 사용하여 매개 변수 객체를 반환하고 Append 메소드로 수신합니다. 이 메소드는 변수를 사용하는 것보다 빠르게 실행되지만 코드 줄을 길게하여 읽기 쉽게 만듭니다. 취미에 따라 이러한 방법 중 하나를 선택할 수 있습니다.
매개 변수가 매개 변수 수집에 추가 된 후에는 유지되므로 매개 변수가 생성 될 때 각 매개 변수에 값이 반드시 할당되지는 않습니다. 매개 변수의 값은 명령이 실행되기 전에 언제든지 설정할 수 있습니다. 예를 들어:
cmdupdate.parameters.append = _
cmdupdate.createparameter (@percent, adcurrency, adparaminput)
cmdupdate.parameters (@percent) = 10
이전 장에서는 컬렉션에 값에 액세스하는 몇 가지 방법이 있으며 매개 변수 컬렉션은 다르지 않다고 언급했습니다. 위의 예는 매개 변수의 이름을 사용하여 세트에서 매개 변수를 검색하거나 색인 번호를 사용하여 검색 할 수 있습니다.
cmdupdate.parameters (0) = 10
위 코드는 매개 변수 세트에 첫 번째 매개 변수를 할당합니다 (0에서 번호가 매겨진 매개 변수 세트)
공유 : ASP 응용 프로그램의 고급 ASP 오류 개체에 대한 관련 지식 vbscript에는 스크립트 통역사가 런타임 오류를 무시하고 스크립트 코드의 실행을 계속하는 onerrorresumenext 문이 있습니다. 그런 다음 스크립트는 err.number 속성의 값을 확인하여 오류가 발생했는지 확인할 수 있습니다. 오류가 발생하면 0이 아닌 값이 반환됩니다