Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評(píng)論 :: 0 Trackbacks
          Print_Table
          ?
          ??? 想把報(bào)表的某一行數(shù)據(jù)直排得打印出來,發(fā)現(xiàn)ask tom上面已經(jīng)有現(xiàn)成的代碼了,貼出來看一下,寫得真好,適用性極強(qiáng)。
          ?
          ?
          create or replace procedure print_table( p_query in varchar2 )
          AUTHID CURRENT_USER
          is
          ??? l_theCursor???? integer default dbms_sql.open_cursor;
          ??? l_columnValue?? varchar2(4000);
          ??? l_status??????? integer;
          ??? l_descTbl?????? dbms_sql.desc_tab;
          ??? l_colCnt??????? number;
          begin
          ??? execute immediate
          ??? 'alter session set
          ??????? nls_date_format=''dd-mon-yyyy hh24:mi:ss'' ';
          ?
          ??? dbms_sql.parse(? l_theCursor,? p_query, dbms_sql.native );
          ??? dbms_sql.describe_columns
          ??? ( l_theCursor, l_colCnt, l_descTbl );
          ?
          ??? for i in 1 .. l_colCnt loop
          ??????? dbms_sql.define_column
          ??????? (l_theCursor, i, l_columnValue, 4000);
          ??? end loop;
          ?
          ??? l_status := dbms_sql.execute(l_theCursor);
          ?
          ??? while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop
          ??????? for i in 1 .. l_colCnt loop
          ??????????? dbms_sql.column_value
          ??????????? ( l_theCursor, i, l_columnValue );
          ??????????? dbms_output.put_line
          ??????????? ( rpad( l_descTbl(i).col_name, 30 )
          ????????????? || ': ' ||
          ????????????? l_columnValue );
          ??????? end loop;
          ??????? dbms_output.put_line( '-----------------' );
          ??? end loop;
          ??? execute immediate
          ??????? 'alter session set nls_date_format=''dd-MON-rr'' ';
          exception
          ??? when others then
          ????? execute immediate
          ????????? 'alter session set nls_date_format=''dd-MON-rr'' ';
          ????? raise;
          end;
          ?
          ??? 執(zhí)行結(jié)果:
          ?
          SQL> exec print_table('select * from v$database');
          ?
          DBID????????????????????????? : 485689964
          NAME????????????????????????? : DODO
          CREATED?????????????????????? : 19-jan-2009 15:10:30
          RESETLOGS_CHANGE#???????????? : 1
          RESETLOGS_TIME??????????????? : 19-jan-2009 14:35:24
          PRIOR_RESETLOGS_CHANGE#?????? : 0
          PRIOR_RESETLOGS_TIME????????? :
          LOG_MODE????????????????????? : ARCHIVELOG
          CHECKPOINT_CHANGE#??????????? : 234242
          ARCHIVE_CHANGE#?????????????? : 125009
          CONTROLFILE_TYPE????????????? : CURRENT
          CONTROLFILE_CREATED?????????? : 19-jan-2009 15:10:30
          CONTROLFILE_SEQUENCE#???????? : 210
          CONTROLFILE_CHANGE#?????????? : 234242
          CONTROLFILE_TIME????????????? : 23-feb-2009 10:04:50
          OPEN_RESETLOGS??????????????? : NOT ALLOWED
          VERSION_TIME????????????????? : 19-jan-2009 15:10:30
          OPEN_MODE???????????????????? : READ WRITE
          PROTECTION_MODE?????????????? : MAXIMUM PERFORMANCE
          PROTECTION_LEVEL????????????? : MAXIMUM PERFORMANCE
          REMOTE_ARCHIVE??????????????? : ENABLED
          ACTIVATION#?????????????????? : 485692838
          DATABASE_ROLE???????????????? : PRIMARY
          ARCHIVELOG_CHANGE#??????????? : 222873
          SWITCHOVER_STATUS???????????? : SESSIONS ACTIVE
          DATAGUARD_BROKER????????????? : DISABLED
          GUARD_STATUS????????????????? : NONE
          SUPPLEMENTAL_LOG_DATA_MIN???? : NO
          SUPPLEMENTAL_LOG_DATA_PK????? : NO
          SUPPLEMENTAL_LOG_DATA_UI????? : NO
          FORCE_LOGGING???????????????? : NO
          -----------------
          ?
          PL/SQL procedure successfully completed
          ?
          ?
          ??? 主要用DBMS_SQL代替了自己寫動(dòng)態(tài)SQL和各種操作的復(fù)雜性,真是一個(gè)DBMS_SQL包使用的典范教程,保存一下。
          ?
          ?
          posted on 2009-01-23 23:06 decode360 閱讀(183) 評(píng)論(0)  編輯  收藏 所屬分類: 10.DB_Tools
          主站蜘蛛池模板: 铜鼓县| 景谷| 安福县| 溧水县| 杭锦旗| 皮山县| 滦平县| 海南省| 通城县| 宿迁市| 吴堡县| 沧州市| 乐安县| 三台县| 武安市| 高平市| 社旗县| 榕江县| 浪卡子县| 建湖县| 锦屏县| 苍梧县| 竹山县| 綦江县| 乐安县| 卢湾区| 读书| 耿马| 资阳市| 南通市| 宁河县| 兴文县| 武陟县| 丰原市| 民勤县| 章丘市| 边坝县| 徐汇区| 常宁市| 岳池县| 新乐市|