0

我以前从未使用过过程,但现在我需要从 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.
4

1 回答 1

2

如果要打印结果。像这样试试

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

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

于 2013-10-30T03:49:46.510 回答