在plsql中将%S转换为null

在plsql中将%S转换为null,plsql,oracle11g,oracle12c,oracleforms,Plsql,Oracle11g,Oracle12c,Oracleforms,我在将oracle form 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

我在将oracle form 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;
似乎当我将此文本“'@Set sizeout2=%sizeout2:bytes=%”存储在文件oracleForm或Plsql中时,将其转换如下:

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;
@Set sizeout2=nullizeout2:字节=%

因为可以在输出文件中将%s转换为null。你能告诉我问题是什么吗?你有没有遇到过类似的问题


请注意,我的后端是12c,前端是11gR2。

PUTF将第一个字符串参数作为格式规范,后续字符串作为内容。此外,还需要一个合适的线路终止符。所以要放线(输出文件,lv_content5c);并删除以下行(带有
CHR(10)
)。

您指的是什么
%s
?您知道正确的cmd脚本有CR/LF行终止符是吗?仅LF肯定会生成一个损坏的脚本文件。此外,文件开头的任何UNICODE字节顺序标记(BOM)都会破坏脚本,请确保您正在编写ANSI或UTF-8无BOM。您是否尝试使用
PUT
而不是
PUTF
?您应该显示相关的批处理代码,其中应显示psql文本expanded@jwdonahue:谢谢你的提示。@pablomatico:谢谢你说得对