【发布时间】:2018-06-20 08:15:46
【问题描述】:
在将我的 oracle 从 6i 迁移到 11g 后,我发现了一个问题。在一个表单中,我正在生成 Windows 批处理命令。部分命令如下:
declare
lv_content5c varchar2(300);
begin
lv_content5c:= '@Set sizeout2=%sizeout2:bytes=%';
CLIENT_TEXT_IO.PUTF(out_file,lv_content5c);
CLIENT_TEXT_IO.PUTF(out_file, CHR(10));
CLIENT_TEXT_IO.FCLOSE(out_file);
client_host('cmd /c start '|| lv_filename);
end;
似乎当我在文件 oracleForm 或 Plsql 中存储此文本 "'@Set sizeout2=%sizeout2:bytes=%'" 时,将其转换如下:
@Set sizeout2=nullizeout2:bytes=%
因为可以观察到 %s 在输出文件中转换为 null。你介意告诉我这是什么问题吗?你有没有遇到过类似的问题?
请注意,我的后端是 12c,前端是 11gR2。
【问题讨论】:
-
你指的是什么
%s?您知道正确的 cmd 脚本有 CR/LF 行终止符吗?只是 LF 肯定会产生一个损坏的脚本文件。此外,文件开头的任何 UNICODE 字节顺序标记(BOM)都会破坏脚本,请确保您正在编写 ANSI 或 UTF-8 无 BOM。 -
你试过用
PUT代替PUTF吗? -
您应该显示相关批处理代码,psql文本应在此处展开
-
@jwdonahue:感谢您的提示。
-
@pablomatico:谢谢你是对的
标签: plsql oracle11g oracle12c oracleforms