Für das riesige Oracle ist die Verwendung von Asp wirklich anspruchsvoll. Besonders wenn es um die Rückgabe eines Ergebnissatzes (Recordset) geht, bereitet es vielen Menschen Schwierigkeiten. Nach Erkundung und Übung habe ich unten meine eigene Lösung geschrieben:
veranschaulichen:
Die Version meines Oracle-Clients ist Oracle 9i. Sie können die Standardinstallation nicht verwenden und dann alle OLEDB-bezogenen Inhalte auswählen und installieren Gehen Sie zum Anbieter unten.
Kopieren Sie den Codecode wie folgt:
<%@Language=VBSCRIPT CodePage=936 LCID=2052%>
<%Option Explicit%>
<!-- #include file=../adovbs.inc -->
<%
Dim cnOra
Funktion Connect2OracleServer
DimmkonStr
conStr = Provider=MSDAORA.Oracle;Datenquelle=xx;Benutzer-ID=?;Passwort=?
Setzen Sie cnOra = Server.CreateObject(ADODB.Connection)
cnOra.CursorLocation = adUseClient '=3
Bei Fehler Weiter fortsetzen
cnOra.Open conStr
Connect2OracleServer = (Err.Number = 0)
Funktion beenden
Sub DisconnectFromOracleServer
Wenn nicht, ist cnOra nichts, dann
Wenn cnOra.State = 1, dann
cnOra.Schließen
Ende wenn
Setzen Sie cnOra = Nothing
Ende wenn
Sub beenden
Sub Echo(str)
Response.Write(str)
Sub beenden
Sub OutputResult
Dimmen Sie cmdOra
Dimrs
Setze cmdOra = Server.CreateObject(ADODB.Command)
Mit cmdOra
.CommandType = adCmdText '=1
.CommandText = {call PKG_TEST.GetItem(?,?)}
.Parameters.Append cmdOra.CreateParameter(p1, adNumeric, adParamInput, 10, 1)
.Parameters.Append cmdOra.CreateParameter(p2, adVarChar, adParamInput, 10, xx)
.ActiveConnection = cnOra
Setze rs = cmdOra.Execute
Wenn nicht, dann rs.Eof
Während nicht rs.Eof
Echo rs(0)
Echo --
Echo rs(1)
Echo <br>
rs.MoveNext
Wend
rs.Schließen
Ende wenn
Setrs=Nichts
Setze cmdOra = Nothing
Ende mit
DisconnectFromOracleServer
Sub beenden
Wenn Connect2OracleServer, dann
Ausgabeergebnis
Anders
Response.Write(Err.Description)
Ende wenn
%>
Das Folgende ist das SQL-Skript von Oracle
----------------------------------SQL-Skript---------- ---- ----------------------
--Paket erstellen---------------------------------
Kopieren Sie den Codecode wie folgt:
Erstellen oder ersetzen Sie das Paket PKG_TEST
IST
TYPE rfcTest IS REF CURSOR;
VERFAHREN GETITEM
( p1 IN NUMMER,
p2 IN VARCHAR2,
p3 OUT rfcTest
);
END; – Paketspezifikation PKG_TEST
-------------------------------------------------- -
--Paketkörper erstellen------------------------------------------------
Erstellen oder ersetzen Sie den Paketkörper PKG_TEST
IST
VERFAHREN GETITEM
( p1 IN NUMMER,
p2 IN VARCHAR2,
p3 OUT rfcTest
)
IST
BEGINNEN
ÖFFNEN p3 FÜR
SELECT * FROM Tabellenname WHERE id = p1 AND name=p2 AND rownum < 10;
AUSNAHME
WENN ANDERE DANN
NULL ;
ENDE;
END; – Paketkörper PKG_TEST