我正在尝试在本地计算机上读取一系列模板文件,并将数据放入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>