SAK 図書館
VB RDO + SQL 応用編 (その四) RDO ストアドファンクション - CreateQuery
基本的に Oracle、SQL-Sever、MDB で共通です。 ■ストアドファンクション / ストアドプロシジャ 例えば、Oracle に次のようなストアドファンクションがあるとします。 (VB で言うユーザ関数のようなもの) これを RDO で呼びたし、戻り値を得ることが可能です。 /* ======================================================================== テンポラリテーブル番号取得 Copyright (C) 1999-2000 Y.SAK ======================================================================== */ create or replace function sak.GetTmp return varchar2 is todt char(10); dt char(10); no number(9); tmp varchar2(20); cid integer; begin todt := to_char(sysdate, 'yyyy.mm.dd'); select 日付 into dt from sak.TMPm; if todt > dt then update sak.TMPm set 番号 = 0, 日付 = todt; end if; update sak.TMPm set 番号 = 番号 + 1; select 番号 into no from sak.TMPm; commit; tmp := 'tmp' || ltrim(to_char(no, '000000')); begin cid := DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(cid, 'drop table ' || tmp, dbms_sql.v7); DBMS_SQL.CLOSE_CURSOR(cid); exception when OTHERS then DBMS_SQL.CLOSE_CURSOR(cid); end; return tmp; end; / ■テンポラリテーブル取得ストアドファンクション呼び出し(一時テーブル、一時表) ▼フォームグローバル宣言で必要な数のテンポラリテーブル取得変数を宣言し ます。ワークt と言うのがそれです。 Const TMP_SCM = "sak." Const GetTmp = "{ ? = call " & TMP_SCM & "GetTmp }" Dim ワークt As String ▼フォーム初期化ルーチンで、実際に使用可能なテンポラリテーブル名を取得 しています。複数個必要な場合は、qu.Execute からを複数書きます。 ストアドファンクションの実行は、RDBcn2 でないとエラーになります。 (Microsoft が Oracle 用に提供しているドライバでないと動作しない。) Private Sub Form_Load() '** テンポラリテーブル名取得 Set qu = RDBcn2.CreateQuery("qu", GetTmp) qu(0).Direction = rdParamReturnValue qu.Execute ワークt = TMP_SCM & qu(0) ▼フォーム破棄ルーチンで、使用したテンポラリテーブルを削除します。 テスト時、残しておきたいなら、drop table の行を注釈にします。 Private Sub Form_Unload(Cancel As Integer) '** テンポラリテーブル削除 if ワークt <> "" then On Local Error Resume Next RDBcn.Execute "drop table " & ワークt, rdExecDirect On Local Error GoTo 0 end if ■補足 ・Oracle の場合、Oracle のネイティブ ODBC ドライバでは、ストアドファン クションが正常に呼び出せません。さんざん悩んだので要注意です。 Microsoft ODBC for Oracle ドライバでストアドファンクションは呼び出し て下さい。 ■VB RDO + SQL 応用編資料
■VB ADO + SQL 応用編資料
■VB oo4o + SQL 応用編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料
■VB テクニック編資料