お世話になります。
VBからストアドの動的SQLを呼んで、VB側で値をレコードセットで取得する方法を探しています。
■ストアド
CREATE OR REPLACE PACKAGE SAMPLE as
CURSOR c2 IS select A from TBL;
TYPE TANTOYOSANDATA IS REF CURSOR RETURN c2%ROWTYPE;
PROCEDURE GetNUMBER(C IN NUMBER,
CU OUT TANTOYOSANDATA);
end;
/
--
CREATE OR REPLACE PACKAGE BODY SAMPLE IS
PROCEDURE GetNUMBER(C IN NUMBER,
CU OUT TANTOYOSANDATA) IS
CUR INTEGER;
STATUS INTEGER;
ROW_PROCESSED INTEGER;
A NUMBER;
BEGIN
--カーソルをOPENする
CUR :=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(CUR,'SELECT A FROM TBL ',DBMS_SQL.V7);
DBMS_SQL.DEFINE_COLUMN(CUR,1,A);
ROW_PROCESSED :=DBMS_SQL.EXECUTE(CUR);
STATUS :=DBMS_SQL.FETCH_ROWS(CUR);
WHILE (STATUS <> 0) LOOP
DBMS_SQL.COLUMN_VALUE(CUR,1,A);
STATUS :=DBMS_SQL.FETCH_ROWS(CUR);
END LOOP;
END;
END SAMPLE;
/
■VB側
Set GoORASESSION = CreateObject("OracleInProcServer.XOraSession")
Set GoORADATABASE = GoORASESSION.OpenDatabase(dbname, cnuser, ORADB_DEFAULT)
Set Recordset = GoORADATABASE.CreatePLSQLDynaset("Begin SAMPLE.GetTANTOINFO(1,:CU)); end;", "CU", ORADYN_DEFAULT)
' If Recordset.EOF Then
Do While Not Recordset.EOF
Label11.Caption = Recordset(0)
Recordset.movenext
Loop
復帰値をRecordSetで受けて
それをまわしながら1レコードずつ取得する方法を探しています
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
DBMSはデバッグ用にしか使った事がないのですが・・・
カーソルを開いて、カーソルに返さないでもいいのでは?
ところでこのストアド、動的ではないような気が・・・
それにSQL文のみで実現するのでは?
それともこのストアドは、質問用のサンプルで、実際には動的なのですか?
もし質問の内容が正規なものなら無理にストアドを使用しないで
Dim GoORASESSION As Object
Dim GoORADATABASE As OraDatabase
Dim Recordset As OraDynaset
Set GoORASESSION = CreateObject("OracleInProcServer.XOraSession")
Set GoORADATABASE = GoORASESSION.OpenDatabase(dbname, cnuser, ORADB_DEFAULT)
Set Recordset = GoORADATABASE.DbCreateDynaset("select A from tbl", ORADYN_DEFAULT)
Do While Not Recordset.EOF
Debug.Print Recordset.Fields(0).Value
Recordset.MoveNext
Loop
これじゃダメですか?
これがはずれで、どうしてもストアドを使用するなら、DBMSを使用しない書き方しかわからないのですが・・・
カーソルにA列の値だけセットしたいという意味ですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
Access2003 オートナンバーの現...
-
UWSCのcallについて
-
フォームを開くときに、コンボ...
-
数字の位ごとの値を表示するプ...
-
Excel-vba 文字列と変数を...
-
VBAのチェックボックス結果を集...
-
VB6.0-整数と余りを求める
-
CGIのPerlの変数をJavaScrip...
-
バッチファイルで正規表現を使...
-
VBAで配列のNULL判定
-
VBAの定数の使い方で、計算値を...
-
相関係数p値の出し方
-
DWORDって
-
DataGridView 複数行同時変更...
-
足して100になるような乱数のア...
-
c言語で乱数を扱うときの
-
何種類の値があるかを調べる方...
-
計算機イプシロン
-
フリーランタイマーの時間差分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
VBAで配列のNULL判定
-
足して100になるような乱数のア...
-
フリーランタイマーの時間差分...
-
DataGridView 複数行同時変更...
-
相関係数p値の出し方
-
世界のナベアツ
-
10進数をアスキーコードに変換
-
C#で動的にコントロールを取得...
-
ラジオボタンの値の取得につい...
-
DWORDって
-
バッチファイルで正規表現を使...
-
4択問題のプログラムでランダム...
-
1つ前の値を変数に保存する方法
-
VBAの定数の使い方で、計算値を...
-
コンボボックスの名前を変数に...
おすすめ情報