【问题标题】:convert %S to null in plsql在plsql中将%S转换为null
【发布时间】: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


【解决方案1】:

PUTF 将第一个字符串参数作为格式规范,随后的字符串作为内容。此外,您需要一个适当的行终止符。 PUT_LINE(out_file,lv_content5c); 也是如此并删除以下行(带有CHR(10) 的行)。

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2020-01-14
    • 2012-03-21
    • 2015-07-07
    • 2017-12-17
    • 1970-01-01
    相关资源
    最近更新 更多