2009-06-30 70 views
2

我需要對過時的盒子上舊的Oracle存儲過程進行一些更改,這些過時的盒子正在運行舊的過程。我可以連接到數據庫的唯一工具是SQL Plus。如何將存儲過程加載到內存中以便在SQL Plus中進行編輯?如何打開一個存儲過程並在SQL * Plus中編輯它

我在網上找到的教程不排除這是如何完成的。 :-(

回答

0

該盒子是HPUX,沒有運行TNS監聽器,幾乎可以清除整個開發工具。但是,DBA能夠使用名爲OEM的管理工具進行連接,並進行了限制性更改。非常感謝您的建議。

6

這將是一個更容易下載 蟾蜍試用版

劃傷,以前的建議,我只是想出來的Oracle SQL Developer鏈接建議和它的作品的桃色精編輯特效

的SQLPlus你很可能需要以顯示存儲過程的內容,並將其脫機到文件(DCookie :-)的建議):

sqlplus> spool myprocname.sql; 
sqlplus> select text from all_source where name = 'MYPROCNAME' and type = 'PROCEDURE' order by line; 
sqlplus> quit; 

然後在一個像樣的編輯器中編輯本地SQL文件。

然後使用SQLPlus運行SQL文件重新構建用於測試的過程。

>sqlplus username/[email protected] @myproc.sql

總之,在keester一個巨大的痛苦。 :-)

+0

+1,但是您可以將後臺打印輸出到一個文件,至少避免了剪切/粘貼疼痛:-) – DCookie 2009-06-30 20:53:49

+0

好一點,我在加入它。:-) – 2009-06-30 21:18:02

0

你不能下載並安裝Oracle SQL Developer?免費。

對於Unix,還有TOra,(開源)

+0

Unix機器,我連接從hpux登錄本地。沒有TNS到分貝,所以我只能在本地連接... – Jeff 2009-06-30 20:14:47

0

如果你可以使用SQL *連接到數據庫另外,你應該能夠使用SQL IDE連接。這就是說,你不能在SQL * Plus中打開一個用於編輯的過程,但是你可以編譯一個過程。您可以將更新後的proc複製到命令提示符中(如果需要,請逐行)並編譯它。

如果您需要以手動方式訪問當前源,則可以查詢USER_SOURCE表。

但是,我強烈建議,但是要考慮用IDE連接到數據庫。

2

您可以使用dbms_metadata.get_ddl函數來檢索代碼,它比all_sources好得多。

spool /tmp/my_proc.txt 
set long 100000 
select dbms_metadata.get_ddl('PROCEDURE','NAME','OWNER') from dual; 
spool off 
相關問題