ASP에서 매개 변수를 사용하여 저장 프로시저를 호출하는 여러 가지 방법
최근 많은 친구들이 저장 프로시저를 호출하는 방법에 대해 문의했습니다. 다음은 ASP에서 매개 변수를 사용하여 저장 프로시저를 호출하는 여러 가지 방법에 대한 간략한 소개입니다.
1. 이 방법은 입력 매개변수가 2개이고 반환 값이 없는 가장 간단한 방법이기도 합니다.
연결 설정 = server.createobject("adodb.connection")
연결.일부DSN 열기
Connection.Execute "procname varvalue1, varvalue2"
'모든 개체를 지우고 리소스를 해제합니다.
연결.닫기
연결 설정 = 없음
2. 레코드세트 세트를 반환하려면:
연결 설정 = server.createobject("adodb.connection")
연결.일부DSN 열기
rs = server.createobject("adodb.recordset") 설정
rs.Open "Exec procname varvalue1, varvalue2",connection
'모든 개체를 지우고 리소스를 해제합니다.
RS.닫기
연결.닫기
설정자=아무것도 없음
연결 설정 = 없음
3. 위의 두 가지 방법 중 어느 것도 반환 값을 가질 수 없습니다(Recordet 제외). 반환 값을 얻으려면 Command 방법을 사용해야 합니다.
우선, 반환 값에는 두 가지 유형이 있습니다. 하나는 C와 VB의 함수 반환 값처럼 저장 프로시저에서 직접 값을 반환하는 것이고, 다른 하나는 여러 값을 반환하는 것이며, 이러한 값을 저장할 변수 이름을 먼저 호출 매개변수에 지정해야 합니다. .
이 예는 여러 매개변수, 입력 매개변수, 출력 매개변수, 반환 레코드 세트 및 직접 반환 값을 처리해야 합니다(충분히 완료되었습니까?)
저장 프로시저는 다음과 같습니다.
pubs를 사용하세요
.
GO
- 저장 프로시저 만들기
생성 프로시저 sp_PubsTest
- 세 개의 매개변수 변수를 정의하고 세 번째 변수에 주의하세요. 특수 표시는 출력용입니다.
@au_lname varchar (20),
@intID 정수,
@intIDOut int OUTPUT
AS
SELECT @intIDOut = @intID + 1
SELECT *
저자로부터
WHERE au_lname LIKE @au_lname + '%'
-- 직접 값을 반환합니다.
@intID + 2 반환
이 저장 프로시저를 호출하는 ASP 프로그램은 다음과 같습니다:
<%@ Language=VBScript %>
<%
희미한 CmdSP
디마도RS
희미한 광고CmdSPStoredProc
광고 매개변수 반환 값이 희미함
희미한 광고 Paraminput
희미한 광고 매개변수 출력
희미한 광고정수
희미한 iVal
희미한 타원형
Dim adoField
Dim adVarChar
'이 값은 VB에서 미리 정의된 상수이므로 직접 호출할 수 있지만 VBScript에서는 미리 정의되어 있지 않습니다.
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200
iVal = 5
oVal = 3
'명령 객체 생성
set CmdSP = Server.CreateObject("ADODB.Command")
'링크 만들기
CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"
'명령 개체 호출 이름 정의
CmdSP.CommandText = "sp_PubsTest"
'명령 호출 유형을 저장 프로시저로 설정합니다(adCmdSPStoredProc = 4).
CmdSP.CommandType = adCmdSPStoredProc
'명령 개체에 매개변수 추가
' 직접 반환 값을 갖도록 저장 프로시저를 정의하며 기본값은 4입니다.
CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
'문자 입력 매개변수 정의
CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
'정수 입력 매개변수 정의
CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
'정수 출력 매개변수 정의
CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)
'저장 프로시저를 실행하고 반환된 레코드 세트를 가져옵니다.
adoRS = CmdSP.Execute 설정
'각 레코드를 인쇄합니다. 해당 필드는 가상이므로 무시할 수 있습니다.
adoRS.Fields의 각 adoField에 대해
adoRS.EOF가 아닌 동안
Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF
다음
응답."<br>" 쓰기
adoRS.MoveNext
Wend
'두 개의 출력 값을 인쇄합니다.
Response.Write "<p>@intIDOut = " & CmdSP.Parameters("@intIDOut").Value & "</p>"
Response.Write "<p>반환 값 = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"
'일반 청소
adoRS = 아무것도 설정하지 않음
CmdSP.ActiveConnection = 없음으로 설정
CmdSP = 없음으로 설정
%>
------------------------------------- ------------------------------------- --------------------------------
ASP에서 SQL Server의 저장 프로시저를 호출하면 프로그램 실행 속도가 빨라질 수 있습니다.
1. 스토리지 호출 프로세스의 일반적인 방법은 SQL Server에 dt_users 저장 프로시저가 있다고 가정합니다.
절차 생성 [dbo].[dt_users]
처럼
사용자 중에서 *를 선택하세요.
반품
가다
첫 번째 방법은 Command 개체를 사용하는 것이 아니라, Recordset 개체를 직접 사용하는 것입니다.
rs=server.createobject("adodb.recordset")를 설정합니다.
sql="exec dt_users"
rs.open sql,conn,1,1 두 번째 방법은 명령 개체를 사용하는 것입니다.
set comm=server.createobject("adodb.command")
comm.commantype=4
comm.activeconnection=conn 설정
comm.commandtext="dbo.dt_users"
rs=server.createobject("adodb.recordset")를 설정합니다.
rs.open comm,,1,1
2. 저장 프로시저에 매개 변수를 전달합니다. 저장 프로시저에 매개 변수가 없고 SQL 문이 하나만 있는 경우 저장 프로시저 호출의 이점이 표시되지 않습니다.
예를 들어 bbs 쿼리의 경우 작성자 및 주제별로 쿼리할 수 있습니다! 그런 다음 다음과 같이 저장 프로시저를 만들 수 있습니다.
매개변수 키워드는 키워드이고, choose는 쿼리를 선택하는 방법입니다.
절차 생성 [dbo].[dt_bbs]
@keyword varchar(20)=null,
@int=null 선택
~처럼
@choose=1인 경우
@keyword와 같은 이름이 있는 bbs에서 *를 선택하세요.
또 다른
@keyword와 같은 제목이 있는 bbs에서 *를 선택하세요.
반품
가다
이런 방식으로 저장 프로시저를 호출할 때 asp에서 프로그램을 작성하고 첫 번째 방법을 사용하는 대신 매개 변수만 전달하면 됩니다.
rs=server.createobject("adodb.recordset")를 설정합니다.
sql="exec dt_bbs '"&키워드&"',"&선택&""
rs.open SQL,콘,1,1
두 번째 방법을 사용하십시오.
set comm=server.createobject("adodb.command")
comm.commantype=4
comm.Parameters.append comm.CreateParameter("@keyword",adChar,adParamInput,50,keyword)
comm.Parameters.append comm.CreateParameter("@keyword",adInteger,adParamInput,,choose)
comm.activeconnection=conn 설정
comm.commandtext="dbo.dt_bbs"
rs=server.createobject("adodb.recordset")를 설정합니다.
rs.CursorType=3
rs.open comm,,1,1