当前位置:首页 » 存储配置 » sqlplus导出存储过程

sqlplus导出存储过程

发布时间: 2023-02-28 23:20:48

‘壹’ 如何导出ORACLE指定存储过程

1、要想连接到一个数据库,先得配置一个tnsnames.ora文件。路径位于 【XX】/NETWORK/ADMIN/tnsnames.ora。【XX】视具体情况而定。

截图中红框标记的地方需要改成你需要连接的数据库的信息。


注意事项

若出现乱码,可能需要将编写的sql文件转换为utf-8格式。

若提示无法创建spool文件,请确保目录C:/EXP/DDL存在,或者指定新的路径。

‘贰’ oracle sql/plus中执行存储过程

因为有输出参数,所以只能通过declare块执行,如下:

declare
声明变量,就是CodeType 、input_code、cu_patient ,可对前两个直接赋值
begin
GetSampleInfo(CodeType, input_code,cu_patient) ;
end;
/

----
多动动手!如果没输出参数可以直接"exec 过程名(参数)"调用,否则就按我说的做,自己往里添加代码就行

‘叁’ oracle9i 中exp/imp 语句能否实现只导入或者导出部分表,或者部分存储过程等等

可以使用expdp 和 impdp 这对备份恢复命令,
前提是你的oracle帐户必须有物理文件的read和write权限.
如果有权限,就直接expdp和impdp,成功后有一个mpfile.log 和mpfile.dmp 把dmp复制过去就可以直接impdp 了.

具体的可以给个参考:
--导出
SQL>create directory mp_dir as 'f:\bak'; ---DBA用户,确定备份文件放哪里(已经存在的目录)?
SQL>grant read,write on directory mp_dir to scott; --赋予scott用户的读写权限
C:>expdp scott/tiger directory=mp_dir [mpfile=mybackup.dmp] [tables = emp,dept] --mpfile设置备份文件名 tables 需要导出那些表[tab1,tab2,....]
--导入
C:>impdp scott/tiger directory = mp_dir mpfile = mybackup.dmp tables = [表名1,表名2 ...]
SQL>是 在sqlplus下操作的, C:>是在系统命令行上操作

‘肆’ sqlplus中怎么执行带参数的存储过程

SQL> create or replace procere jl_test
2 (a in varchar2,b out varchar2)
3 as
4 begin
5 b:= a;
6 end;
7 /
SQL> var c varchar2(10);
SQL> exec jl_test('01',:c)
PL/SQL 过程已成功完成。
SQL> print c
C
--------------------------------
01

‘伍’ oracle 11g expdp 可以导出存储过程吗

从oracle
12c
备份(expdp)出来的包,还原到11g里,想想都知道会有兼容性问题。
果不其然,报错了:
ora-39142:
版本号
4.1
(在转储文件
“叉叉叉.expdp”
中)

兼容
之类
后来才知道,在12c中备份出来时,应指定版本信息,例如我要导进11g的库(具体版本为11.1.0.6.0,打开sqlplus就能看到),则version=11.1.0.6.0
语句:
在12c备份
?
1
expdp
system/password@sid12c
directory=dbbak
mpfile=20160321.expdp
logfile=20160321.log
schemas=leftfist
version=11.1.0.6.0
在11g中还原
?
1
impdp
s

‘陆’ 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文件,如图:

热点内容
android应用层 发布:2025-07-08 02:42:32 浏览:301
大唐存储销量 发布:2025-07-08 02:41:11 浏览:582
脚本怎么打开 发布:2025-07-08 02:41:06 浏览:822
贵州电信iPtv升级服务器地址 发布:2025-07-08 02:38:48 浏览:412
电脑怎么链接本地服务器 发布:2025-07-08 02:34:22 浏览:147
android调试webview 发布:2025-07-08 02:26:28 浏览:358
压缩袋鞋子 发布:2025-07-08 02:21:30 浏览:751
为什么安卓打吃鸡感觉有延迟 发布:2025-07-08 02:09:32 浏览:168
课题组服务器如何使用 发布:2025-07-08 02:09:27 浏览:44
sql语句长度限制 发布:2025-07-08 02:07:04 浏览:770