우리는 SQL Server 저장 프로시저를 호출하여 ASP에서 데이터베이스 작업을 수행하는 데 이미 익숙하지만 데스크톱 수준 데이터베이스 Access에서도 저장 프로시저를 만들고 사용할 수 있다는 것을 알고 계십니까?
Access + ASP는 경량 웹 응용 프로그램을 개발하기 위한 탁월한 조합입니다. 간단하고 빠르며 호환성이 있지만 일반적으로 성능은 높지 않습니다. 게다가 ADODB.Connection과 Recordset 객체를 사용하여 SQL문을 실행하는데 있어서는 매개변수가 포함된 SQL문의 매개변수 값이 문자열로 엮이는 경우가 많아 작은따옴표 등의 문제가 발생하는 경우가 있다. 저장 프로시저를 사용하면 SQL 문 매개 변수 값을 추가로 제공할 수 있다는 이점이 있습니다.
실제로 Access(2000 이상)의 저장 프로시저는 SQL Server의 저장 프로시저와 비교할 수 없습니다. Stored Procedure Lite로만 간주할 수 있고, 여러 SQL 문을 지원하지 않고, 논리문을 지원하지 않습니다(하하, 결국 T-SQL이 아닙니다) 등. 사전 컴파일되었는지 여부는 아직 알 수 없습니다. 그러나 VBScript에 의해 구현된 소위 클래스가 캡슐화되어 코드 구조의 미화와 프로그램 재사용성을 크게 촉진하는 것처럼 Access의 경량 저장 프로시저도 오류 확률 데이터베이스 작업을 표준화하고 최소화하는 데 도움이 되어야 하며 성능이 향상될 수 있습니다.
아래에서는 Access에서 저장 프로시저를 만든 다음 이를 ASP 프로그램에서 사용하는 방법을 단계별로 설명하겠습니다.
(1) Access에서 저장 프로시저 만들기
모두가 Access를 얼마나 잘 사용하는지 모르겠습니다. 어쨌든 저에게는 MDB 데이터베이스 파일을 생성하는 도구일 뿐입니다. 그런 다음 Access 인터페이스에서 테이블, 인덱스, 제약 조건 등을 생성합니다. 끝났어~
Access의 쿼리는 저장 프로시저의 역할을 합니다. 아래에 언급한 Access 저장 프로시저나 쿼리는 모두 이 항목을 참조합니다.
쿼리 생성을 위해 Access는 VS.NET에서 DataAdapter를 생성할 때 마법사와 유사한 바보 도구를 제공합니다. 하지만 저는 SQL 코드를 직접 작성하는 것을 좋아합니다.
그런 다음 기본 Access 인터페이스 왼쪽에 있는 쿼리 단추를 클릭한 다음 오른쪽에 있는 디자인 보기에서 쿼리 만들기를 두 번 클릭하여 쿼리 디자인 보기를 엽니다.
이때 시각적 쿼리 빌더가 먼저 팝업되어 SQL 문에 포함되어야 하는 테이블을 추가합니다.
테이블을 추가한 후 디자인 뷰를 마우스 오른쪽 버튼으로 클릭하고 SQL 뷰를 선택하면 SQL 코드 편집 창으로 전환됩니다.
이제 Access의 저장 프로시저의 특징에 대해 이야기해 보겠습니다.
현재 내 느낌은 Access 쿼리가 아마도 사전 컴파일과 같은 일부 최적화가 적용된 SQL 문에 대한 래퍼라는 것입니다. SQL Server 저장 프로시저 작성과 같은 여러 작업, 트랜잭션, 논리적 판단, 루프 등을 사용할 수 없습니다.
그러나 Access 저장 프로시저를 사용하는 주요 목적은 추가 매개 변수가 제공하는 쿼리를 사용하는 것입니다. 저장 프로시저를 사용하면 더 이상 매개 변수 값을 SQL 문 문자열에 연결할 때 발생하는 다양한 문제에 직면할 필요가 없습니다.
암호:
희미한 SQL
sql = SELECT * FROM 사용자 WHERE UserName = ' & userName & '
위 코드에서 문자열 변수 userName에 '작은따옴표'가 포함되어 있으면 오류가 보고됩니다. 수동으로 변환해야 합니다:
암호:
희미한 SQL
sql = SELECT * FROM Users WHERE UserName = ' & 바꾸기(userName, ', '') & ' '는 두 개의 연속된 작은따옴표로 변환됩니다.
매개변수가 포함된 쿼리를 사용하면 SQL 문을 다음과 같이 작성할 수 있습니다.
암호:
희미한 SQL
sql = SELECT * FROM 사용자 WHERE UserName = @userName
그런 다음 Command 개체의 Parameter 속성을 사용하여 @userName 매개 변수의 값을 전달하면 됩니다. 이는 매우 편리하고 직관적입니다.
암호:
cmd를 사용하여
'매개변수 객체 생성
.Parameters.Append .CreateParameter(@userName)
'각 매개변수에 대한 값을 지정
.Parameters(@userName) = 사용자 이름
끝
여기서는 Access 저장 프로시저의 매개변수 사용에 대해서도 설명합니다. @ 변수를 사용하여 매개 변수를 지정한 다음 동일한 이름의 매개 변수 개체를 전달하는 SQL Server의 저장 프로시저와 달리 Access의 매개 변수는 이름이 아닌 순서로 식별됩니다. 전달되는 매개변수에는 이름을 지정할 필요가 없습니다. 임의로 이름을 지정할 수 있습니다. SQL의 매개변수 이름도 매개변수 값이 전달되는 한 순서대로 지정되어야 합니다. 여기서 매개변수는 SQL 문에 나타납니다. 일반적으로 Command 개체의 Execute 메서드를 사용하고 매개변수 값 배열을 직접 전달하여 ~를 실행합니다.
암호:
cmd.실행, 배열(사용자 이름)
또 다른 예로, Access 저장 프로시저 중 하나는 다음과 같이 작성됩니다.
암호:
UserName = p_UserName 및 BookTitle = p_bookTitle인 사용자에서 *를 선택합니다.
매개변수 값의 배열을 올바른 순서로 전달하여 이 방법으로 수행할 수 있습니다.
암호:
cmd.Execute, Array(사용자 이름, bookTitle)
자, 예제에서 사용된 두 개의 쿼리를 살펴보겠습니다. 하나는 데이터를 쓰는 것입니다. SQL 문을 작성한 후 저장하고 이름을 지정합니다.
데이터를 읽는 또 다른 저장 프로시저 코드입니다.
(2) 저장 프로시저 사용
그런 다음 ASP 프로그램에서 이러한 저장 프로시저를 호출할 수 있습니다.
여기에서 제가 Access의 쿼리가 저장 프로시저라고 말한 이유를 알 수 있습니다. Command 개체의 CommandType 속성은 Stored Proc인 4로 설정되어 있습니다.
그래서...
다음 코드는 매우 간단합니다.
암호:
<%
옵션 명시적
희미한 초
무작위화
s = Rnd * 100
딤 콘, cmd
conn = Server.CreateObject(ADODB.Connection) 설정
cmd = Server.CreateObject(ADODB.Command) 설정
conn.Open 공급자=Microsoft.Jet.OLEDB.4.0; 데이터 소스= & Server.MapPath(sp.mdb)
cmd를 사용하여
.ActiveConnection = 연결
.CommandType = &H0004 '저장 프로시저
.CommandText = 새 데이터 추가
끝
cmd.Execute, Array(CStr(Now()), CSng(s))
cmd를 사용하여
.ActiveConnection = 연결
.CommandType = &H0004 '저장 프로시저
.CommandText = GetData
끝
희미한 resultRS, resultArray
결과 설정RS = cmd.Execute(, Null)
결과가 아닌 경우RS.EOF 다음
resultArray = 결과RS.GetRows()
종료 조건
결과RS = 없음 설정
cmd = 없음 설정
연결.닫기
conn = 없음 설정
응답.쓰기 <ul>
나는 어둡다
i = 0인 경우 UBound(resultArray, 2)로
Response.Write <li> & resultArray(0, i)
응답.쓰기 및 결과 배열(1, i)
응답.쓰기 및 결과 배열(2, i)
응답.쓰기 </li>
다음
응답.쓰기 </ul>
%>