sql >> データベース >  >> RDS >> Oracle

dblinkを介したOracleSQLタイプ

    私は過去に同様の問題を抱えていました。次に、基本的にOracleのdbリンクは、単純なSQL型以外では「壊れている」という結論に達しました(特にUDT、CLOBには問題がある可能性があり、XMLTypeにも問題がある可能性があります)。 OIDソリューションを機能させることができれば、幸運を祈ります。

    私が頼った解決策は、DBリンクの代わりにJavaストアドプロシージャを使用することでした。

    Javaストアドプロシージャの特徴:

    1. 「豊富なタイプのセット」を返すことができます。ほぼすべての複雑なタイプ(UDT、テーブル/配列/変数)を返すことができます。Oracleオンラインドキュメント 詳細については。 Oracleは、DBLinkからよりも、Javaから複雑な(またはリッチな)型をマーシャリングするというはるかに優れた仕事をします。
    2. 保存されたJavaは「デフォルト接続」を取得できます(データベースへのSQL接続と同じセッションで実行されます-認証の問題はありません)。
    3. 格納されたJavaはリモートDB上のPL/SQL procを呼び出し、JavaJDBCレイヤーはリモートDBからのマーシャリングを実行します。
    4. 格納されたJavaは結果をパッケージ化し、結果をSQLまたはPL/SQLレイヤーに返します。

    少し手間がかかりますが、Javaが少しあれば、Oracleのドキュメントとサンプルからソリューションを「カットアンドペースト」できるはずです。

    これがお役に立てば幸いです。



    1. MySQLストアドプロシージャの作成と使用-チュートリアル

    2. テーブルの複数の列から個別の値をその数とともに選択する

    3. Mysqlによる削除順序

    4. MySQLで来月の最初と最後の日付を取得する