代码之家  ›  专栏  ›  技术社区  ›  Amir

在plsql中将%S转换为null

  •  1
  • Amir  · 技术社区  · 7 年前

    在将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;
    

    似乎当我在oracleForm或Plsql文件中存储此文本“'@Set sizeout2=%sizeout2:bytes=%”时,将其转换如下:

    @Set sizeout2=nullizeout2:字节=%

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   DodgyCodeException    7 年前

    PUTF将第一个字符串参数作为格式规范,后续字符串作为内容。此外,还需要一个合适的行终止符。因此,请执行PUT\u LINE(out\u file,lv\u content5c);并删除以下行(带 CHR(10) ).