定義
所謂存儲過程(Stored Procedure),就是一組用于完成特定數(shù)據(jù)庫功能的SQL語句集,該SQL語句集經(jīng)過
編譯后存儲在數(shù)據(jù)庫系統(tǒng)中。在使用時候,用戶通過指定已經(jīng)定義的存儲過程名字并給出相應(yīng)的存儲過程參數(shù)
來調(diào)用并執(zhí)行它,從而完成一個或一系列的數(shù)據(jù)庫操作。
一直以來,覺得MySQL中使用\G參數(shù)改變輸出結(jié)果集的顯示方式非常好用,尤其是在命令行界面。但是ORACLE數(shù)據(jù)庫沒有這個功能,今天在搜索到Tom大師的一篇博文時,發(fā)現(xiàn)大師用一個存儲過程print_table實現(xiàn)了類似這樣的功能。只是我們這些凡夫俗子不知道而已,特意整理在此,方便自己或有需要的人以后查看。
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 hh34: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; /
網(wǎng)站題目:oracle中print_table存儲過程實例介紹-創(chuàng)新互聯(lián)
標(biāo)題來源:http://jinyejixie.com/article32/hissc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站制作、標(biāo)簽優(yōu)化、網(wǎng)站導(dǎo)航、定制開發(fā)、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容