oracle -PL/SQL 解析文件名声明中的变量名



我正在尝试在本地计算机上读取一系列模板文件,并将数据放入oracle数据库的clob列中。 当文件名是硬连线时,我有一些东西可以很好地工作:

Declare
    v_Template clob:= '
     @@MyFolderMyFilename.txt
     '; 
    Begin
    --Insert the contents of the file into a Clob column in the database
    end;
    /

此变量值稍后将插入到表的 CLOB 列中。

这里对此进行了描述。https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjGjI7i24fXAhXhx1QKHQ14AcoQFggmMAA&url=https%3A%2F%2Fstackoverflow.com%2Fquestions%2F19721274%2Fcan-sqlplus-read-the-contents-of-a-file-into-a-variable&usg=AOvVaw3qxvCpXHc9D2tof3Gisvlz

但是当我尝试为文件名放置一个变量时,v_template的值会填充变量的名称,而不是文件的内容。 有没有办法解决这个问题?例如

DECLARE
-- the @@ expression must be in separate line as follows
Myfilename varchar(50):='@@MyPathTemplate_File.txt';
file_contents VARCHAR2(32767):='
 &&MyFileName
 ';
Begin
insert into MyTAble (template_definition)
values(file_contents);
commit;
end;

您只需要一行上的双符号本身,就像在您的第一个示例中一样。

set serveroutput on
Declare
file_contents VARCHAR2(32767) := '
@@c:tempefs.txt
';   
BEGIN 
  dbms_output.put_line('===');
  dbms_output.put_line(file_contents);
  dbms_output.put_line('===');
END;
/
===
this is
a test
===
PL/SQL procedure successfully completed.
SQL>

最新更新