‘壹’ oracle中运行.sql文件的日志怎么输出
批量执行sql文件并输出执行日志
1、建立betchinsert.bat文件。内容:sqlplus username/password@服务名 @BETCH.SQL > SQLINSERT.log exit
2、建立betah.sql文件。内容:
@@nkgis.sql\AE_USERS.sql
@@nkgis.sql\AE_ROLES.sql
@@nkgis.sql\AE_MENUS.sql
可以写多个sql文件,注意路径要正确。在这里的nkgis.sql是文件夹名
3、建立相应的sql文件,如AE_USERS.sql
4、执行betchinsert.bat就可以执行所有的sql文件。并且会在betchinsert.bat文件的同目录中生成SQLINSER.log文件。
执行结束后会自动退出.
‘贰’ oracle pl/sql 语句declare..begin..and.. 执行后没有显示结果,只有pl/sql执行成功,怎样显示出结果
可以通过dbms_output.put_line()将结果输出
括号中写字符串变量,或字符串。
执行后,在sql窗口的 输出页面查看输出结果。
解决后记得采纳。
‘叁’ 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;
(3)oraclesql结果输出扩展阅读;
存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。
‘肆’ oracle中如何把查询结果导出到excel里面
oracle导出excel
一、oracle导出excel
方法一:最简单的方法---用工具plsql dev
执行File =>newReport Window 。在sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、 as html、exportresults,其中export results按钮中就可以导出excel文件、csv文件、tsv文件、xml文件。
方法二:最专业的方法---用原始工具sqlplus
原文参见:http://www.eygle.com/archives/2005/04/eoasqlplusieaae.html
我做了一点修改,如下所示:
1.main.sql
用以设置环境,调用具体功能脚本
2.功能脚本-get_tables.sql
为实现具体功能之脚本
通过这样两个脚本可以避免spool中的冗余信息,参考:
如何去除SQLPLUS中SPOOL的冗余信息
示例如下:
1.main.sql脚本:
[oracle@jumper utl_file]$ more main.sql
set linesize 200
set term off verify off feedback off pagesize 999
set markup html on entmap ON spool on preformat off
spool d:/tables.xls
@d:/get_tables.sql
spool off
exit
2.get_tables.sql脚本:
[oracle@jumper utl_file]$ more get_tables.sql
select owner,table_name,tablespace_name,blocks,last_analyzed
from all_tables order by 1,2;
3.执行并获得输出:
[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @d:/main.sql
SQL*Plus: Release 9.2.0.4.0 - Proction on Mon Apr 25 10:30:11 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction
[oracle@jumper utl_file]$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls
[oracle@jumper utl_file]$
此处输出为xls文件,通过下图我们可以看到输出效果:
把main.sql脚本中的,spooltables.xls更改为spool tables.htm,我们可以获得htm格式输出,效果如下图:
方法三:最悲剧的方法,之所以称为悲剧,是因为这个方法其实很简单,但是你可能没有注意。
打开plsql dev工具,执行file=>newsql window ,输入sql,点击工具栏“执行”按钮或按快捷键F8。会显示出结果集。
点击结果集的左上方,可全部选中结果集,然后右键=>,直接粘贴到excel文件中就可以了!
方法四:最努力的方法,这种方法稍微有点麻烦,但不用写脚本,也不用psql dev工具,只用sql plus就可以了。
在sqlplus中,执行想要的sql,把结果集到文本文件中(或者直接用spool命令直接输入到文本文件中),把不必要的字符、空格替换成逗号",",然后另存为csv文件,最后在用excel另存为exl文件就可以了。
二、把excel文件数据导入到oracle的某个表中。
方法一:最省时的方法,需要借助plsql dev工具。
a.复制整个工作簿中的数据到某个表中。
点击excel工作区左上角,全部选中数据,ctrl+c 复制整个工作簿中的数据。在plsql dev中,编辑表格表的数据,点击数据展示区左上角,直接粘贴就可以了(注意excel的第一列应该保持为空,如果不为空可以增加一空列,不然你复制的数据就会少一列的)!如下图
所示:
b.复制某列的数据。
这个很容易,选中excel某一列的数据,复制,选中oracle某个表的某一列,直接粘贴就可以了。plsql dev和excel中的列可以相互复制。
方法二:最专业的方法,用sql loader。
原文地址:http://daniel-wuz.javaeye.com/blog/198112
1.录入excel 测试表格,test.xls。
2.另存为.csv格式
3.创建sql*loader控制文件test.ctl,内容如下:
Load data
Infile 'c:/test.csv'
insert Into table test Fields terminated by','(column1,column2,column3,column4,column5)
需要将数据文件拷贝到对应位置
4.到数据库中建立对应的测试表test
create table test (
column1 Varchar2(10),
column2 Varchar2(10),
column3 Varchar2(10),
column4 Varchar2(10),
column5 Varchar2(10)
)
5.执行导入命令
Sqlldr userid = system/manager control='C:/test.ctl'
导入成功!
附:
Sqlldr的函数关键字说明:
Userid --oracle用户名 userid = username/password
Control --控制文件名称 control =‘e:/insert.ctl’
Log –-日志文件名称 log = ‘e:/insert.log’
Bad --损坏文件名称
Data --data file name
Discard --discard file name
Discardmax --number of discards to allow(默认全部)
Skip --导入时跳过的记录行数(默认0)
Load --导入时导入的记录行数(默认全部)
Errors --允许错误的记录行数(默认50)
ctl文件内容说明:
Load data
Infile ‘e:/test.csv’ --数据源文件名称
Append|insert|replace --append在表后追加,insert插入空表,replace替代原有内容
Into table test --要导入的数据库表名称
[when id = id_memo] --过滤条件
Fields terminated by X’09’ --字段分隔符
(id,name,telphone) --字段名称列表
方法三:最悲剧的方法,创建oracle外部表,为了把excel中的数据导入到数据中而去建立外部表,大题小做了!
将excel文件另存为csv文件a.csv,然后创建一个外部表t,数据指向a.csv。然后根据外部表创建一个普通的表:
create table a asselect * from t ,这样就可以把最初的excel文件导入到oracle中的表了。
方法四:最古典的方法,拼接sql语句。如果你excel熟的话,这种方法也不错。
在excel中,把数据拼接成如下sql语句:
insert into empvalues('1','2','3');
insert into empvalues('4','5','6');
insert into empvalues('7','8','9');
出以上sql,执行就可以了!!
‘伍’ OraclePLSQL在游标中用while循环为什么没有结果输出
@@fetch_status=0 是游标提取数据失败,即数据提取结束到最后了。
游标主要作用是,操作SQL查询结果集。
以下为典型游标的应用:
create proc cursorTest
@_id int=0,
@_name varchar(50)=''
as--创建游标
declare @cursor cursor--设定游标欲操作的数据集
set @cursor=cursor for
select _id,_name from users
open @cursor--打开游标
fetch next from @cursor into @_id,@_name--移动游标指向到第一条数据,提取第一条数据存放在变量中
while(@@fetch_status=0)begin--如果上一次操作成功则继续循环
print @_name--操作提出的数据
fetch next from @cursor into @_id,@_name--继续提下一行
end
close @cursor--关闭游标
deallocate @cursor--删除游标
‘陆’ oracle sql developer输出结果如何以表格显示
输出结果可以用表格显示,也可以用文档显示。