2010-02-19 48 views
7

我想运行200多个选择查询并将结果追加到文件中。所有查询都是相同的日期时间变量的唯一区别。我没有创建例程的权限,这就是为什么我必须创建所有查询。我没有权限创建视图或其他表来存储结果。我无权访问PL/SQL。Oracle 10g - 将查询结果写入文件

现在我需要创建一个报告,每个查询的结果(所有结果都是整数),但我似乎找不到另一个解决方案,但要逐个运行并逐个复制结果。

你们中的任何一个神奇的大脑都可以帮助我吗?这有点紧急。

回答

4

1 - 把您的疑问在一个文本文件,像这样:

set pagesize 0; 

select some_field 
from some_table; 

select another_field 
from another_table; 
/

2 - 保存在某个地方(让我们sa YC:\ my_file.sql)

3 - 在命令提示符下运行以下命令:

c:\>sqlplus -s username/[email protected] <tmp.sql> output.txt 

4 - 看看里面的 “output.txt的”

+0

他仍然不得不“摆脱”;但是,不是吗?否则,查询字符串是否在输出中? – FrustratedWithFormsDesigner 2010-02-19 21:03:54

+0

优秀的约瑟夫。也会尝试这一个。谢谢!! – Daniel 2010-02-19 21:05:13

+0

虽然查询不在输出中,但列名是。有没有办法让它骑呢? – Daniel 2010-02-19 21:27:22

2

您可以将输出后台打印到文件。

查看spool(URL - Oracle 10.2用户指南)命令。

另外:

http://www.praetoriate.com/t_garmany_easysql_the_spool_command.htm

而且这似乎是一些布局提示:

http://www.oracle.com/technology/oramag/code/tips2004/020904.html

+0

已经尝试过,它没有工作得很好。它存储查询字符串,而且,如果我同时运行10个查询,它会中断。 – Daniel 2010-02-19 20:41:55

+0

尝试'设置回声关闭;'在运行查询之前。这阻止显示查询字符串。 当然,'echo'在脚本开始时就已经开始了,一定要在最后重新开启它。总是让事情处于你找到他们的状态;) – FrustratedWithFormsDesigner 2010-02-19 20:44:59

+0

将尝试那一个。 – Daniel 2010-02-19 21:04:51

0

如果您有机会获得sqlplus中,你可以运行匿名PL/SQL块。

DECLARE 
v_cnt number; 
BEGIN 
select ... into v_cnt ...; 
dbms_output.put_line(v_cnt); 
END; 
. 
spool out.log 
/
spool off