RAW
タイプ変数はPL/SQLコードでは変更できませんか?私は、RAW
タイプの変数の特定のバイトを、メモリのコピーをしない場所に置き換えることはできますか?もちろんRAW型変数はPL/SQLコードで不変ですか?
我々はスペックバイト変更するための適切ないくつかのルーチンでUTL_RAW
パッケージを持っているが、それはそれらのすべてが可変のインスタンスのメモリをコピーのようになります。
またUTL_RAW.BIT_AND
UTL_RAW.BIT_OR
UTL_RAW.OVERLAY
この質問は密接に効果的な文字列にリンクされています連結問題。例えば、Javaの文字列も不変であり、このタスクのためにStringBuilderが用意されています。 私はこれに関するOracleのドキュメントで明確な情報が見つかりませんでした。いくつかのグーグルの後[1]答えはのように見える:はい。 RAW型の変数は、PL/SQLコードでは不変であり、文字列でもあります。本当に本当ですか?この質問の説明と歴史がもっとある方がよいでしょう。
参考文献:
わかりません。私はこの質問の目的を理解しています。他の変数と同様に、RAW変数を確実に更新することができます。セマンティクスは同じです。 NOCOPYパラメータに関する例外は同様に適用されますが、これはUTL_RAWのいずれの関数にも当てはまりません。なぜあなたはメモリコピーなしでRAW変数の特定のビットを変更する必要がありますか? –
一般的な目的はPL \ SQLマシンの内部動作をクリアすることです。また、strings \ rawの作業の効率の実用上の問題があります。膨大な量の操作を実行すると、高いメモリトラフィックが発生します。例えば、連鎖。なぜこれが私を混乱させるのですか? Javaとその中にStringBuilderが存在するためです。それは私たちが問題と解決策を持っているように見えます.PRO \ SQLには問題があります。 –
あなたの問題がまだ分かりません。純粋なPL/SQLのパフォーマンスが問題となる場合は、NOCOPYおよび/またはおそらくネイティブ・コンパイル済PL/SQLを使用して探索することができます。それでも、 'RAW'変数自体は問題ではありません。あなたはおそらくそれらを使って問題を解決しています - 解決しようとしている問題は何ですか? –