- - PR -
ODP.NET 経由でファンクション戻り値を取得する
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-05-23 17:05
あれ??早まったかも。。。
実際にデータベースに画像を登録して読みだしたところ、動的カーソルだろうが、静的カーソルだろうがちゃんと読みだせますね。 ケビンさんの TO_BLOB('ABC') を GetOracleBlob() しようとしたら怒られたけれど、これって TO_BLOB しても実際は CLOB なんじゃないですか?? _________________ かるあ のメモ と スニペット |
|
投稿日時: 2007-05-23 17:39
> かるあ さん
指摘いただいた、TO_BLOB() ですけど、 Oracle SQL Developer を使っての検証ですと出力値は BLOB 型である、 ということがわかっています。 もし、CLOB で返されているのならば、ここでキャスト例外が発生するはず!? あとご指摘のコードなんですが、BLOB データを一旦データベースに 格納していますが、この形になってしまうと永続LOBとして扱われます。 今、求めているのはファンクションの出力である、一時LOBについて考えていてました。 つまりは、単独のSQL文を実行するときも、 SELECT TO_BLOB('ABC') FROM DUAL; を実行したときに、GetOracleBlob() で取得できることが理想でした。 |
|
投稿日時: 2007-05-25 07:30
時間がなかなか取れなくてすいません。
そうですか。。。一時LOBというのがあんまりわかっていないのですが、 TO_BLOB でキャストした値はたしかにとれませんね。。。 複数件帰ってくるってことは OUT の引数にもできないし、サイズ的にAdapterからDataSetに流し込むのも難しそうですよね。 ごめんなさい、ほかにどなたかこの件で解決策をお持ちの方いらっしゃいませんか? _________________ かるあ のメモ と スニペット |
|
投稿日時: 2007-05-26 22:55
> かるあさん
調査に協力していただいてありがとうございます。 こちらも調べておりましたが、ファンクションの戻りで返される OracleException 例外のエラー番号(-3001)について調べてみますと、 どうやら未実装の機能らしいことに導かれます。 解決法の1つとしては、あらかじめ BLOB フィールドを用意しておいて、 トリガーなどを使って、追加や更新が発生したときに BLOB フィールドを 更新する方法が1つにあります。ある意味では逃げになってしまいますが…。 |