DOBON.NETプログラミング道掲示板

■34047 / 3階層)  oo4oのAddTableをADOに移行したい
□投稿者/ 魔界の仮面弁士 大御所(1173回)-(2018/11/27(Tue) 16:52:54)
  • アイコン2018/11/27(Tue) 16:58:09 編集(投稿者)

    No34046に返信(Yoshiさんの記事)
    > ストアドを変更する(変数受け取りなどに変える)と、ほぼ新規に5本

    元のストアドは、必ずしも変更しなくて良いのではないでしょうか。


    VBA 側は、配列オブジェクトとして渡していた部分を、
    作業用テーブルへの AddNew (INSERT 処理)に変更します。

    Oracle 側には、その作業テーブルから、データを配列にして
    元のストアドを呼び出すようなストアドを追加する、という流れ。


    この場合、中継用のストアドが増えるだけで、
    元のストアドはそのまま生かせるんじゃないかと…。


    > Windows10 64bit
    > Excel 64bit で考えると
    > どの手法が現実的でしょうか。

    64bit 版 VBA だと、COM(ActiveX) コンポーネントも 64bit 版が要求されますが、
    ・ADODB + OLEDB は配列オブジェクトを渡せない
    ・ODBC でも渡せない
    ・OO4O は 32bit 版しかない
    と言うことで、64bit 版 VBA だと、正直どうしようも無いと思います。
    VBA ではなく、.NET (あるいは Java とか?)なら対処できそうですが。


    > (どういった改修が工数が小さいでしょうか)

    既定では、64bit OS 上であっても、32bit 版の Office が導入されますよね。
    https://support.office.com/ja-jp/article/2dee7807-8f95-4d0c-b5fe-6c6f49b8d261

    64bit 版で無ければならない強い理由付けが無い限りは、
    Office 64bit をアンインストールして、
    32bit 版 Office と 32bit 版 Oracle Client を入れなおすのも選択肢の一つです。
    そうすれば oo4o を引き続き利用できるので、追加の開発工数が不要になります。

    ただ、64bit 版前提の VBA コードを既に組んでしまっているとなると、
    後掛り作業になってしまうでしょう。


    もし、Office は 64bit のままにしておきたいのであれば、
    配列オブジェクトを渡すために、
     ・「32bit VBScript + OO4O」を Excel VBA から Shell 関数等で呼び出す
     ・「.NET Framework + ODP.NET」を Excel VBA から Shell 関数等で呼び出す
    などの手直しが必要になるかと思います。


    ところで、今回の場合、INDEX BY BINARY_INTEGER が付与されているので、
    結合配列(索引付き表)を使っているのですよね。だとしたら、
    > 'カウンタループ 'l'はカウンタ
    > inAnimal(l) = AnimalSet(l)
    > 'Loop
    というのは、少々不自然な印象を受けました。

    索引付きの場合は連番ではなく、いわゆる Key Value Pair な
    連想配列になるはずで、そうすると VBA 側としては、
    Dictionary などでコレクション管理されているはずでは…?


    なお、先の No34045 のパッケージであれば、

    DECLARE
    inanimal スキーマ名.PKG_SAMPLE.TestArray;
    BEGIN
    inanimal(12) := 'いち';
    inanimal(34) := 'に';
    inanimal(56) := 'さん';
    PKG_SAMPLE.EXAMPLE( inanimal );
    inanimal.DELETE;
    END;

    という動的 SQL 文を作って「cn.Execute SQL」することはできます。

    インジェクション対策や SQL コマンドの長さ制限等を考えると、
    あまり積極的にお奨めできる方法では無いですが…。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: oo4oのAddTableをADOに移行したい /Yoshi →Re[4]: oo4oのAddTableをADOに移行したい /Yoshi
 
上記関連ツリー

Nomalアイコン oo4oのAddTableをADOに移行したい / Yoshi (18/11/26(Mon) 16:40) #34042
Nomalアイコン Re[1]: oo4oのAddTableをADOに移行したい / 魔界の仮面弁士 (18/11/26(Mon) 19:13) #34043
  ├Nomalアイコン Re[2]: oo4oのAddTableをADOに移行したい / 魔界の仮面弁士 (18/11/27(Tue) 11:19) #34045
  └Nomalアイコン Re[2]: oo4oのAddTableをADOに移行したい / Yoshi (18/11/27(Tue) 16:17) #34046
    └Nomalアイコン oo4oのAddTableをADOに移行したい / 魔界の仮面弁士 (18/11/27(Tue) 16:52) #34047 ←Now
      └Nomalアイコン Re[4]: oo4oのAddTableをADOに移行したい / Yoshi (18/11/30(Fri) 17:12) #34055 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -