0
ローカルマシン上の一連のテンプレートファイルを読み込み、データをoracleデータベースのclob列に格納しようとしています。私は、ファイル名がハードワイヤードであるときは本当によく働く何かを持っている:oracle -PL/SQLファイル名の宣言で変数名を解決する
Declare
v_Template clob:= '
@@MyFolder\MyFilename.txt
';
Begin
--Insert the contents of the file into a Clob column in the database
end;
/
この変数値は、後にテーブルのCLOB列に挿入されます。
しかし、ファイル名の変数を配置しようとすると、v_templateの値にファイルの内容ではなく変数の名前が設定されます。これを適切に解決する方法がいくつかありますか?たとえば、
DECLARE
-- the @@ expression must be in separate line as follows
Myfilename varchar(50):='@@MyPath\Template_File.txt';
file_contents VARCHAR2(32767):='
&&MyFileName
';
Begin
insert into MyTAble (template_definition)
values(file_contents);
commit;
end;
ありがとうございますが、&&は機能しませんでした。値 '&& MyFileName'は、MyFileName変数で定義されているファイルの内容ではなく、表に挿入されます。私が 'set define off'を削除すると、MyFileNameの値の入力が求められます。 これはファイル名を変数にすることで、ディレクトリの内容を読み込み、ファイルのリストをループすることができます。あなたの提案に合うように2番目のコードブロックを編集しました。 – CMB
私の答えは、ダブルアットサインでした。私が「アットマーク」を意味するとき、「アンパサンド」とタイプしました。あなたはファイル名の入力を求めていますか?その間に私は誤植を訂正します。 –
ファイル名の入力を求めたくありません。ファイル名(MyFileName)に変数を使用し、そのファイルの内容を別の変数(File_Contents)に読み込みたいとします。上記のあなたの例では、ファイル名が非常にうまくいきます。しかし、@ @ MyFileNameVariableのときは動作させることができません。それはそれを読まないか、File_Contents変数にファイルの内容の代わりにファイルの名前を設定します。これを調べてくれてありがとう。 – CMB