2010-02-19 3 views
7

Deseo ejecutar más de 200 consultas de selección y anexar los resultados a un archivo. Todas las consultas son iguales a la única diferencia en la variable de fecha y hora. No tengo privilegios para crear una rutina, es por eso que tuve que crear todas las consultas. No tengo privilegios para crear una vista u otra tabla para almacenar los resultados. No tengo acceso a PL/SQL.Oracle 10g - Resultados de las consultas de escritura en el archivo

Ahora necesito crear un informe con los resultados de cada una de estas consultas (todos los resultados son números enteros) pero no parece encontrar otra solución que ejecutar uno por uno y copiar los resultados uno por uno .

¿Alguno de ustedes cerebros maravillosos puede darme una mano en esto? Es algo urgente.

Respuesta

4

1 - Ponga sus consultas en un archivo de texto, así:

set pagesize 0; 

select some_field 
from some_table; 

select another_field 
from another_table; 
/

2 - Guárdelo en algún lugar (vamos a yc: \ my_file.sql)

3 - Ejecutar este en el símbolo del sistema:

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

4 - Mire en el interior "salida.txt"

+0

Todavía tendría que "desactivar el eco;" sin embargo, ¿no? De lo contrario, ¿no estaría la cadena de consulta en el resultado? – FrustratedWithFormsDesigner

+0

Excelente Joseph. Intentaremos este también. ¡¡Gracias!! – Daniel

+0

Aunque la consulta no está en el resultado, el nombre de columna es. ¿Hay alguna manera de obtenerlo? – Daniel

2

Puede transferir su salida a un archivo.

Consulte el comando spool (URL - Oracle 10.2).

también:

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

y lo que parece ser algunos consejos de Presentación:

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

+0

Ya lo probé y no funcionó bastante bien. Almacena la cadena de consulta y, además, se rompe si ejecuto 10 consultas al mismo tiempo. – Daniel

+0

intente 'set echo off;' antes de ejecutar la consulta. Eso evita que se muestre la cadena de consulta. Por supuesto, de 'echo' estaba en el comienzo del script, asegúrese de volver a encenderlo al final. Siempre deje las cosas en el estado en que las encontró;) – FrustratedWithFormsDesigner

+0

Lo intentaré. – Daniel

0

Si usted tiene acceso a sqlplus, puede ejecutar bloques PL/SQL anónimos.

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