Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks
          ??? 想把報表的某一行數據直排得打印出來,發現ask tom上面已經有現成的代碼了,貼出來看一下,寫得真好,適用性極強
          ?
          ?
          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;

          ?
          ??? 執行結果:
          ?
          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代替了自己寫動態SQL和各種操作的復雜性,真是一個DBMS_SQL包使用的典范教程,保存一下。




          -The End-

          posted on 2009-01-23 23:06 decode360-3 閱讀(338) 評論(1)  編輯  收藏 所屬分類: SQL Dev

          評論

          # re: Print_Table[未登錄] 2010-07-07 23:37 gary
          我的博客里貼得逗號,空格號都被中文化了.,還是google好啊. 馬上找到print_table了.  回復  更多評論
            

          主站蜘蛛池模板: 长顺县| 柳州市| 陵水| 崇州市| 嘉峪关市| 吉木乃县| 崇礼县| 呼图壁县| 绥阳县| 同江市| 南岸区| 霍州市| 温州市| 长宁县| 资中县| 托克托县| 洞头县| 长乐市| 瑞昌市| 巴林左旗| 西乌珠穆沁旗| 景东| 安多县| 潞西市| 岗巴县| 彝良县| 郑州市| 宿松县| 凤山市| 宽甸| 鄄城县| 巴马| 宁远县| 临江市| 青神县| 紫阳县| 南昌县| 永福县| 买车| 徐汇区| 攀枝花市|