- PR -

ODP.NET 経由でファンクション戻り値を取得する

投稿者投稿内容
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-23 17:05
あれ??早まったかも。。。

実際にデータベースに画像を登録して読みだしたところ、動的カーソルだろうが、静的カーソルだろうがちゃんと読みだせますね。

ケビンさんの TO_BLOB('ABC') を GetOracleBlob() しようとしたら怒られたけれど、これって TO_BLOB しても実際は CLOB なんじゃないですか??

_________________
かるあ のメモスニペット
ケビン
会議室デビュー日: 2007/04/12
投稿数: 15
投稿日時: 2007-05-23 17:39
> かるあ さん

指摘いただいた、TO_BLOB() ですけど、
Oracle SQL Developer を使っての検証ですと出力値は BLOB 型である、
ということがわかっています。
もし、CLOB で返されているのならば、ここでキャスト例外が発生するはず!?

あとご指摘のコードなんですが、BLOB データを一旦データベースに
格納していますが、この形になってしまうと永続LOBとして扱われます。
今、求めているのはファンクションの出力である、一時LOBについて考えていてました。
つまりは、単独のSQL文を実行するときも、

SELECT TO_BLOB('ABC') FROM DUAL;

を実行したときに、GetOracleBlob() で取得できることが理想でした。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-25 07:30
時間がなかなか取れなくてすいません。
そうですか。。。一時LOBというのがあんまりわかっていないのですが、
TO_BLOB でキャストした値はたしかにとれませんね。。。

複数件帰ってくるってことは OUT の引数にもできないし、サイズ的にAdapterからDataSetに流し込むのも難しそうですよね。

ごめんなさい、ほかにどなたかこの件で解決策をお持ちの方いらっしゃいませんか?
_________________
かるあ のメモスニペット
ケビン
会議室デビュー日: 2007/04/12
投稿数: 15
投稿日時: 2007-05-26 22:55
> かるあさん

調査に協力していただいてありがとうございます。

こちらも調べておりましたが、ファンクションの戻りで返される
OracleException 例外のエラー番号(-3001)について調べてみますと、
どうやら未実装の機能らしいことに導かれます。

解決法の1つとしては、あらかじめ BLOB フィールドを用意しておいて、
トリガーなどを使って、追加や更新が発生したときに BLOB フィールドを
更新する方法が1つにあります。ある意味では逃げになってしまいますが…。

スキルアップ/キャリアアップ(JOB@IT)