如何在批处理文件的日志文件中显示PL / SQL块中使用的变量的值?和阵列?

时间:2014-10-29 13:53:35

标签: variables batch-file plsql getline

基本上我使用批处理文件在Windows任务计划程序上运行.sql文件。批处理文件生成一个显示所有put_lines的日志文件。我现在还希望看到赋给变量的值: v_chks_dm ,但无法找到实现它的方法。尝试了get_line语句但失败了...有谁知道怎么做? 谢谢!

这是批处理文件中的内容:

echo off
echo ****************************>>C:\output.log

sqlplus userid/password@csdpro @V:\CONDITION_TEST.sql>>C:\output.log

这里是.sql文件

declare 
  v_chks_dm  number;
  begin
  Select /*+parallel (a,4)*/ count(distinct a.src_table) into v_chks_dm
    from hcr_dm.hcr_dm_fact a;
    dbms_output.put_line('v_chkt_dm value assigned');
--  dbms_output.get_line(v_chks_dm);
  if.... then... else.... end if;
  end; 

还有一个问题......如果变量是一个数组怎么办?我有这样的东西,但得到一个错误说ORA-06533:下标超出计数。数组中的值的数量通常在0到10之间变化,但可能更多。谢谢!

  declare 
  type v_chks_array is varray(10) of varchar2(50);
  arrSRCs v_chks_array;
  begin
  arrSRCs :=v_chks_array();
  arrSRCs.EXTEND(10);
  Select /*+parallel (a,4)*/ distinct a.src_table BULK collect into arrSRCs
    from hcr_dm.hcr_dm_fact a;
  dbms_output.put_line(arrSRCs(10));
  end; 

1 个答案:

答案 0 :(得分:0)

dbms_output.put_line('v_chkt_dm value = ' || v_chkt_dm);

或更好

dbms_output.put_line('v_chkt_dm value = ' || to_char(v_chkt_dm, '<number format>'));

您可以在documentation中选择合适的数字格式。