巨大な Oracle にとって、Asp は非常に使いやすいものです。 特に結果セット (レコードセット) を返す場合、多くの人が困難を感じます。探索と実践を経て、私は独自の解決策を以下に書きました。
例証します:
Oracle クライアントのバージョンは oracle 9i です。クライアントをインストールする場合、デフォルトのインストールを使用することはできません。それをカスタマイズしてから、OLEDB 関連のコンテンツをすべて選択してインストールする必要があります。そうしないと、次の場所にアクセスしても見つかりません。以下プロバイダー。
次のようにコードをコピーします。
<%@Language=VBSCRIPT コードページ=936 LCID=2052%>
<%オプション明示%>
<!-- #include file=../adovbs.inc -->
<%
ディムcnOra
関数 Connect2OracleServer
ディムコンストラ
conStr = プロバイダー=MSDAORA.Oracle;データ ソース=xx;ユーザー ID=?;パスワード=?
cnOra = Server.CreateObject(ADODB.Connection) を設定します。
cnOra.CursorLocation = adUseClient '=3
エラー時は次へ再開
cnOra.Open conStr
Connect2OracleServer = (エラー番号 = 0)
終了機能
OracleServer からのサブ切断
cnOra が存在しない場合は何もありません
cnOra.State = 1 の場合
cnOra.Close
終了の場合
cnOra = なしを設定します
終了の場合
エンドサブ
サブエコー(str)
応答.書き込み(文字列)
エンドサブ
サブ出力結果
ディム cmdOra
ディムル
cmdOra = Server.CreateObject(ADODB.Command) を設定します。
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
rs = cmdOra.Execute を設定します。
そうでない場合は rs.Eof then
rs.Eof ではない間
エコーrs(0)
エコー --
エコーrs(1)
エコー<br>
rs.次へ移動
ウェン
rs.閉じる
終了の場合
Setrs=なし
cmdOra = なしを設定します
で終わる
Oracleサーバーから切断
エンドサブ
Connect2OracleServer の場合
出力結果
それ以外
応答.書き込み(エラー.説明)
終了の場合
%>
以下はOracleのSQLスクリプトです。
----------------------------------SQL スクリプト---------- ---- ------------------------
--ビルドパッケージ---------------------------------
次のようにコードをコピーします。
パッケージ PKG_TEST の作成または置換
は
タイプ rfcTest は REF カーソルです。
プロシージャGETITEM
( p1 番号、
p2 IN VARCHAR2、
p3 OUT rfcテスト
);
END; -- パッケージ仕様 PKG_TEST
-------------------------------------------------- -
--パッケージ本体の構築----------------------------------
パッケージ本体 PKG_TEST の作成または置換
は
プロシージャGETITEM
( p1 番号、
p2 IN VARCHAR2、
p3 OUT rfcテスト
)
は
始める
p3 を開く
SELECT * FROM テーブル名 WHERE id = p1 AND name=p2 AND rownum < 10;
例外
他の人がそのとき
NULL ;
終わり;
END; -- パッケージ本体 PKG_TEST