기본 ASP 저장 프로시저 실행 및 결과 검색: 모범 사례
기존 ASP 개발자는 SQL Server 저장 프로시저 작업 시, 특히 결과 검색과 관련하여 문제에 직면하는 경우가 많습니다. 프로시저가 데이터를 반환해야 하는 경우에도 빈 응답 또는 닫힌 레코드 집합은 일반적인 문제입니다. 이는 ASP 코드 내에서 중요한 SQL Server 설정과 비효율적인 데이터 처리를 간과하는 데서 비롯되는 경우가 많습니다.
빈 결과가 자주 발생하는 원인 중 하나는 저장 프로시저에서 SET NOCOUNT ON
사용을 무시하는 것입니다. 기본적으로 SQL Server는 영향을 받은 행 수를 반환하므로 실제 결과 집합을 방해할 수 있습니다. SET NOCOUNT ON
데이터만 반환되도록 보장합니다.
또 다른 성능 병목 현상은 ADODB.Recordset
을 사용하여 데이터를 반복하는 것입니다. 이 접근 방식은 느릴 수 있습니다. 보다 효율적인 방법은 후속 처리를 위해 전체 결과 세트를 배열로 검색하는 것입니다.
클래식 ASP 저장 프로시저 처리를 위한 최적화된 접근 방식:
다음 단계에서는 Classic ASP에서 저장 프로시저를 실행하고 데이터를 검색하는 최적화된 방법을 자세히 설명합니다.
인스턴스화 ADODB.Command
: ADODB.Command
개체를 생성하고 유효한 연결 문자열 또는 ADODB.Connection
개체를 사용하여 연결을 설정합니다.
명령 속성 구성: CommandText
속성을 저장 프로시저 이름으로 설정하고 CommandType
속성을 adCmdStoredProc
으로 설정합니다.
매개변수 관리: 저장 프로시저가 매개변수를 허용하는 경우 Parameters
컬렉션을 사용하여 매개변수를 추가하고 데이터 유형과 방향(예: adParamInput
)을 지정합니다.
데이터 실행 및 검색: Execute
메서드를 사용하여 명령을 실행합니다. 레코드세트를 직접 처리하는 대신 GetRows
메소드를 사용하면 전체 결과세트를 2차원 배열로 효율적으로 로드할 수 있습니다.
수정된 코드 예:
다음은 이러한 개선 사항을 보여주는 세련된 코드 예제입니다.
<code class="language-vbscript">Const adParamInput = 1, adVarChar = 200 Dim conn_string, row, rows, ary_data conn_string = "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;" Set objCommandSec = CreateObject("ADODB.Command") With objCommandSec .ActiveConnection = conn_string .CommandType = adCmdStoredProc .CommandText = "usp_Targets_DataEntry_Display" .Parameters.Append .CreateParameter("@userinumber", adVarChar, adParamInput, 10, inumber) .Parameters.Append .CreateParameter("@group", adVarChar, adParamInput, 50, "ISM") .Parameters.Append .CreateParameter("@groupvalue", adVarChar, adParamInput, 50, ismID) .Parameters.Append .CreateParameter("@targettypeparam", adVarChar, adParamInput, 50, targetType) Set rs = .Execute() If Not rs.EOF Then ary_data = rs.GetRows() rs.Close() Set rs = Nothing End If End With Set objCommandSec = Nothing ' Process data from the array If IsArray(ary_data) Then rows = UBound(ary_data, 2) For row = 0 To rows Response.Write(ary_data(1, row) & "<br>") ' Example: Accessing the second column (index 1) Next Else Response.Write("No data returned") End If</code>
이 수정된 코드는 효율적으로 데이터를 배열로 검색하여 레코드 세트 반복으로 인한 성능 오버헤드를 피하고 Classic ASP에서 더 빠르고 안정적인 저장 프로시저 실행을 가능하게 합니다. 프로덕션 환경에서는 잠재적인 오류를 적절하게 처리하는 것을 잊지 마세요.
위 내용은 기존 ASP에서 저장 프로시저를 효율적으로 실행하고 결과를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!