Sqlplus可以将文件内容读入变量吗?

Joh*_*n O 2 oracle sqlplus

我一直在修补sqlplus一段时间了,我已经设法让sqlplus将文件内容读入替换变量中:

exit | sqlplus -s login/pass@db @script.sql "`cat file.txt`"
Run Code Online (Sandbox Code Playgroud)

这主要是因为我的脚本需要...甚至保留文件中的换行符.但是,我只使用了50或60字节大小的示例文件.我最终使用的实际文件将至少为几千字节.所以就在这时我决定检查一个替换变量的最大大小:240个字符.

我的sqlplus脚本中有没有办法将文件的内容读入绑定变量?Oracle文档似乎用GET命令暗示了这一点,并说通常你只是用它来加载sql/sqlplus脚本.

http://docs.oracle.com/cd/B10501_01/server.920/a90842/ch13.htm#1009882

file_name [.ext]表示要加载的文件(通常是脚本).

diz*_*iaq 5

是的,这是一个棘手的方法.把东西放到props.txt并运行脚本:

DECLARE
  -- the @@ expression must be in separate line as follows
  file_contents VARCHAR2(32767) := '
@@props.txt
';
BEGIN 
  dbms_output.put_line('===');
  dbms_output.put_line(file_contents);
  dbms_output.put_line('===');
END;
/
Run Code Online (Sandbox Code Playgroud)

请注意,该文件props.txt不能包含"@",否则您将获得嵌套的SQL*PLUS调用