❶ oracle 怎麼用命令導出用戶下的存儲過程
方法很多:
1、使用Oracle資料庫設計工具,反向工程導入。
這類工具有:CASE Studio、ERwin、ERStudio、PowerDesigner等。
2、exp
exp userid=用戶/用戶密碼 file=user.dmp rows=n
❷ oracle存儲過程如何輸出信息
可用DBMS_OUTPUT.PUT_LINE()對存儲過程的進行輸出。
編寫存儲過程:
create or replace procere test_pro(in_num number)
as
M number;
begin
M := in_num;
if 0 < M then
dbms_output.put_line('輸出sql語句1');
elsif M < 3 then
dbms_output.put_line('輸出SQL語句2');
else
dbms_output.put_line('nothing');
end if;
end;
(2)oracle導出所有用戶存儲過程擴展閱讀;
存儲在資料庫的數據字典中,存儲在當前的應用中安全性由資料庫提供安全保證,必須通過授權才能使用存儲子程序,安全性靠應用程序來保證,如果能執行應用程序,就能執行該子程序。模式描述IN參數用來從調用環境中向存儲過程傳遞值,不能給IN參數賦值,給此參數傳遞的值可以是常量、有值的變數、表達式等。
❸ Oracle批量導出存儲過程(保持每個存儲過程獨立)
略微復雜,需要存儲過程實現。
1、創建輸出路徑,比如你要在d盤test目錄下輸出,你就先在d盤根目錄下建立一個test的目錄。
2、sqlplus下以sysdba登錄,執行以下語句
createorreplacedirectoryTMPas'd: est';
grantread,writeondirectoryTMPtoscott;--比如我用的scott用戶
altersystemsetutl_file_dir='d: est'scope=spfile;
3、以上步驟執行完,需要重啟資料庫。
4、創建一個存儲過程,代碼如下(基本是不用改動,原封復制即可):
CREATEORREPLACEPROCEDURESP_OUTPUT_PROCEDUREis
file_handleutl_file.file_type;
Write_contentVARCHAR2(1024);
Write_file_nameVARCHAR2(50);
v_namevarchar2(50);
v_textvarchar2(2000);
cursorcur_procere_nameis
selectdistinctnamefromuser_sourcewheretype='PROCEDURE';
cursorcur_sp_outis
selectt.text
from(select0line,'CREATEORREPLACE'text
fromal
union
selectline,text
fromuser_source
wheretype='PROCEDURE'
andname=v_name)t
orderbyline;
begin
opencur_procere_name;
loop
fetchcur_procere_name
intov_name;
exitwhencur_procere_name%notfound;
write_file_name:=v_name||'.txt';
opencur_sp_out;
loop
fetchcur_sp_out
intov_text;
exitwhencur_sp_out%notfound;
file_handle:=utl_file.fopen('TMP',write_file_name,'a');
write_content:=v_text;
--writefile
IFutl_file.is_open(file_handle)THEN
utl_file.put_line(file_handle,write_content);
ENDIF;
--closefile
utl_file.fclose(file_handle);
endloop;
closecur_sp_out;
endloop;
closecur_procere_name;
end;
5、創建完畢執行存儲過程,這個就不贅述了,執行完畢後,你會發現d盤test目錄下的文件名就是以存儲過程名命名的txt文件,如圖:
❹ Oracle中用哪個命令可以批量導出存儲過程
這樣試試:
在sqlplus 下:
set echo off;
set heading off;
set feedback off;
spool c:\proc.txt
--1、用sys用戶等陸的話:
select text from dba_source where owner='YOUR_USER' and type ='PROCEDURE';
--2、用一般用戶(要導出其下存儲過程的用戶):
select text from user_source;
spool off;
❺ oracle如何導出存儲過程
可以使用expdp,不過很麻煩
主要是看你的需求,如果只是一兩個存儲過程,例:
select text from all_source where name = '『; --引號裡面填寫要查看的存儲過程名字。
❻ oracle資料庫可否批量導出存儲過程
Oracle批量導出存儲過程
法一:
PL/SQL工具導出
法二:
Sql代碼
SET echo off;
SET heading off;
SET feedback off;
spool C:\Documents and Settings\Administrator\桌面\proc.sql;--1、用sys用戶等陸的話:
Sql代碼
select text from dba_source where owner= 'lingfeng' and type = 'PROCEDURE';--2、用一般用戶(要導出其下存儲過程的用戶):
Sql代碼
select text from user_source;
spool off;
法三:(自己寫存儲過程導出)
1.創建DIRECTORY
Sql代碼
create or replace directory PROCE_DIR as 'C:/Documents and Settings/Administrator/桌面';如創建報沒許可權的錯誤,則以system的用戶登錄,給當前用戶賦權--賦權語句
Sql代碼
grant create any directory to bijian;
--撤權語句
Sql代碼
revoke create any directory from bijian;
創建之後可通過如下語句查詢是否創建成功
Sql代碼
select * from dba_directories;
2.創建導出存儲過程
Sql代碼
create or replace procere loadProce(owner varchar2)is
type user_source_table_type is table of user_source.text%TYPE INDEX BY BINARY_INTEGER;user_source_table user_source_table_type;file_handle utl_file.file_type;
stor_text VARCHAR2(4000);
sql_stat varchar2(1000);
sql_stat2 varchar2(1000);
sql_stat3 varchar2(1000);
nCount NUMBER;
i NUMBER;
begin
sql_stat:='select distinct(name) from all_source where owner = ''' || upper(owner) || '''';execute immediate sql_stat bulk collect into user_source_table;file_handle:=utl_file.fopen('PROCE_DIR','test.sql','W');for j in 1..user_source_table.count loop
i:=1;
sql_stat2:='SELECT MAX(LINE) FROM ALL_SOURCE WHERE OWNER=''' || upper(owner) || ''' AND NAME=''' || user_source_table(j) || '''';--dbms_output.put_line(sql_stat2);
execute immediate sql_stat2 into nCount;
WHILE i<=nCount LOOP
sql_stat3:='SELECT TEXT FROM ALL_SOURCE WHERE OWNER=''' || upper(owner) || ''' AND NAME=''' || user_source_table(j) || ''' and line = ' || i;--dbms_output.put_line(sql_stat3);
execute immediate sql_stat3 into stor_text;i:=i+1;
utl_file.put(file_handle,stor_text);
END LOOP;
end loop;
utl_file.fclose(file_handle);
commit;
end loadProce;
3.調用,將TYPE BODY、PROCEDURE、TYPE、FUNCTION、TRIGGER、PACKAGE BODY、PACKAGE保存到桌面的test.sql中Sql代碼
begin
loadproce('bijian');
end;
❼ oracle資料庫怎麼導出存儲過程
Oracle怎麼導出存儲過程www.MyException.Cn網友分享於:2014-02-26瀏覽:115次Oracle如何導出存儲過程昨天使用exp可以導出oracle資料庫表,今天說下怎麼導出存儲過程。首先看下使用pl/sql怎麼導出存儲過程。導出步驟:tools-->ExportUs
❽ oracle 怎麼導出資料庫里 所有的表結構和存儲過程
假設原來的表是test1 要寫到的表是test2test1的欄位為 a b ctest2的欄位為 d e f 其中a和d對應 b和e對應 c和f對應先把要寫到的表清掉,執行如下語句:truncate table test2;然後把test1表的數據導入到test2表中,執行如下語句:insert into test2select * from test1;
❾ 如何導出ORACLE指定存儲過程
1、要想連接到一個資料庫,先得配置一個tnsnames.ora文件。路徑位於 【XX】/NETWORK/ADMIN/tnsnames.ora。【XX】視具體情況而定。
截圖中紅框標記的地方需要改成你需要連接的資料庫的信息。
2、測試資料庫是否能連通。
運行CMD,命令行執行:sqlplus 用戶名/密碼@資料庫。
3、編寫導出存儲過程的腳本,保存為E:\export.sql。大概如下(標紅框的地方替換成要保存腳本的路徑和需要導出的存儲過程列表):
SET echo off ;
SET heading off ;
SET feedback off ;
SPOOL 'C:/EXP/DDL/PRC_JG_JGTZ.SQL' replace
SELECT CASE
WHEN LINE = 1 THEN
'CREATE OR REPLACE ' || TEXT
WHEN LINE = MAX_LINE THEN
TEXT || CHR(10 ) || '/'
ELSE
TEXT
END
FROM USER_SOURCE A
LEFT JOIN (SELECT A.NAME,A.TYPE, MAX(LINE) MAX_LINE
FROM USER_SOURCE A
WHERE TYPE in ( 'PROCEDURE', 'PACKAGE' ,'PACKAGE BODY' )
GROUP BY A.NAME,A.TYPE ) B ON A.NAME||A.TYPE = B.NAME||B.TYPE
WHERE A.TYPE in ('PROCEDURE' , 'PACKAGE', 'PACKAGE BODY' ) AND A.NAME IN
(
'ETL_FACT_JG_SAEINDEX_SCALE'
,'ETL_FACT_JG_SAEINDEX_SCALE_OLD'
,'ETL_DM_JG_CIRC'
)
ORDER BY a.NAME||a.TYPE , LINE;
SPOOL OFF
4、執行剛剛編寫的腳本文件,導出指定的存儲過程。
連接資料庫後,輸入:@E:\export.sql
如果遇到了截圖中出現的問題,請參照文章結尾的【注意事項】。
5、若要在新的資料庫上創建導出的存儲過程,只需連上新的數據,然後執行剛生成的腳本文件即可。
連接資料庫後輸入:@C:\exp\ddl\PRC_JG_JGTZ.SQL
注意事項
若出現亂碼,可能需要將編寫的sql文件轉換為utf-8格式。
若提示無法創建spool文件,請確保目錄C:/EXP/DDL存在,或者指定新的路徑。
❿ oracle怎麼導出function和procere,即函數和存儲過程
使用oracle的一般都裝了PL/SQL吧,對象窗口,找到對應的函數或者存儲過程,右鍵查看或編輯。
一般單個我是這么用,如果很多的話可以參考一下網上提供的方法:
oracle 導出一個用戶下的所有存儲過程
方法一:
set echo off ;
set heading off ;
set feedback off ;
spool d:\tmp.txt
select text from user_source ;
spool off;
方法二:
使用PL/SQL 菜單 Tools --> Export user objects... ,對彈出的dialog中選擇user和output file,選中要導出的內容,點擊export導出就行了