如何打印出PL / SQL程序?

时间:2013-10-30 03:32:24

标签: sql oracle stored-procedures oracle11g

我之前从未使用过程,但此刻我需要从java语言运行此过程并打印出变量。你知道我怎么打印出来的吗?

我从Ask Tom网站获得了这个程序:

http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:231414051079

create or replace
    procedure show_space
    ( p_segname in varchar2,
      p_owner   in varchar2 default user,
      p_type    in varchar2 default 'TABLE' )
    as
        l_free_blks                 number;

        l_total_blocks              number;
      l_total_bytes               number;
      l_unused_blocks             number;
      l_unused_bytes              number;
      l_LastUsedExtFileId         number;
      l_LastUsedExtBlockId        number;
      l_LAST_USED_BLOCK           number;
      procedure p( p_label in varchar2, p_num in number )
      is
       begin
           dbms_output.put_line( rpad(p_label,40,'.') ||
                                 p_num );
       end;
   begin
       dbms_space.free_blocks
       ( segment_owner     => p_owner,
         segment_name      => p_segname,
         segment_type      => p_type,
         freelist_group_id => 0,
         free_blks         => l_free_blks );

       dbms_space.unused_space
       ( segment_owner     => p_owner,
         segment_name      => p_segname,
        segment_type      => p_type,
        total_blocks      => l_total_blocks,
         total_bytes       => l_total_bytes,
        unused_blocks     => l_unused_blocks,
        unused_bytes      => l_unused_bytes,
        LAST_USED_EXTENT_FILE_ID => l_LastUsedExtFileId,
        LAST_USED_EXTENT_BLOCK_ID => l_LastUsedExtBlockId,
       LAST_USED_BLOCK => l_LAST_USED_BLOCK );

      p( 'Free Blocks', l_free_blks );
      p( 'Total Blocks', l_total_blocks );
      p( 'Total Bytes', l_total_bytes );
      p( 'Unused Blocks', l_unused_blocks );
      p( 'Unused Bytes', l_unused_bytes );
      p( 'Last Used Ext FileId', l_LastUsedExtFileId );
      p( 'Last Used Ext BlockId', l_LastUsedExtBlockId );
      p( 'Last Used Block', l_LAST_USED_BLOCK );
  end;
  /

当我在SQLPLUS中运行时,我什么都没得到:

SQL> exec show_space( 'GRADE');

PL/SQL procedure successfully completed.

1 个答案:

答案 0 :(得分:2)

如果要打印出结果。试试这样,

set serveroutput on;
exec show_space( 'GRADE');

请参阅Oracle Docs以了解有关设置serveroutput的更多信息。

相关问题