2010-02-19 15 views
7

200'den fazla seçim sorgusu çalıştırmak ve sonuçları bir dosyaya eklemek istiyorum. Tüm sorgular, tarih-saat değişkenindeki tek farkla aynıdır. Bir rutin oluşturmak için ayrıcalıklara sahip değilim, bu yüzden tüm soruları oluşturmam gerekti. Sonuçları saklamak için bir görünüm veya başka bir tablo oluşturma ayrıcalığım yok. PL/SQL'e erişimim yok.Oracle 10g - Sorgulama sonuçları dosyaya yaz

Şimdi bu sorguların her birinin sonuçlarıyla birlikte bir rapor oluşturmam gerekiyor (tüm sonuçlar tamsayıdır) ancak başka bir çözüm bulmuyorum ama tek tek koşmak ve sonuçları tek tek kopyalamak .

Her biriniz harika beyinler bana bu konuda yardımcı olabilir mi? Bu acil bir şey.

cevap

4

1 - şöyle bir metin dosyasına Sorgularınızı koyun:

set pagesize 0; 

select some_field 
from some_table; 

select another_field 
from another_table; 
/

2 - Bir yere saklayın (hadi sayalım yc: \ my_file.sql)

3 - Komut satırında bu çalıştırın:

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

4 - Eğer sqlplus erişiminiz varsa "çýktý.txt" İçine bak

+0

Hala ekoyu kapatması gerekiyordu, “değil mi? Aksi takdirde sorgu dizgisi çıktıda olmaz mı? – FrustratedWithFormsDesigner

+0

Mükemmel Joseph. Bunu da deneyeceğim. Teşekkür ederim!! – Daniel

+0

Sorgu çıktıda olmamasına rağmen, sütun adı. Onu sürmenin bir yolu var mı? – Daniel

2

Çıktınızı bir dosyaya alabilirsiniz.

spool (URL - Oracle 10.2 kullanıcı kılavuzu) komutuna bakın.

Ayrıca

:

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

Ya bazı düzen ipuçları gibi görünüyor:

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

+0

Zaten bunu denedi ve çok iyi çalışmadı. Sorgu dizesini saklar ve aynı anda 10 sorgu çalıştırırsam kırılır. – Daniel

+0

Sorguyu çalıştırmadan önce 'echo off; Bu, sorgu dizesinin görüntülenmesini engeller. Elbette, "echo" komut dosyasının başlangıcındaydı, sonunda tekrar açtığınızdan emin olun. Her zaman onları bulduğunuz halde bırakın;) – FrustratedWithFormsDesigner

+0

Bunu deneyeceğim. – Daniel

0

, Çalıştırabileceğiniz anonim PL/SQL blokları.

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