Abrir pasta/diretório usando PL/SQL

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
leandromiranda87
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 43
Registrado em: Ter, 20 Mar 2012 11:37 am
Localização: Campinas
Leandro L. Miranda

Pessoal, td bem??

Alguém sabe se é possível, usando Pl/SQL ou alguma outra forma para abrir uma PASTA/DIRETÓRIO.
Exemplo: Quero abrir o C:\Temp e preciso fazer isso de forma automática, quando eu executar uma procedure.

Essa abertura deve ser como se eu fosse até o local da pasta mesmo, abrir ela e visualizar os arquivos.

Hoje consigo esse resultado usando um applet java, mas é bem chato pois sempre que o applet é invocado, se a versão java está desatualizada ele fica pedindo para atualizar. Sem contar as vezes que trava. :(

Sabem se isso é possível??
leandromiranda87
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 43
Registrado em: Ter, 20 Mar 2012 11:37 am
Localização: Campinas
Leandro L. Miranda

Pra constar, a única coisa que encontrei na web foi isso:

http://stackoverflow.com/questions/3596 ... -directory

Porém, não me atende pois nesse caso ele apenas lista os arquivos presentes na pasta.
Avatar do usuário
adrianoturbo
Moderador
Moderador
Mensagens: 393
Registrado em: Qui, 20 Mar 2008 4:09 pm
Localização: Brasília
Adriano Alves
---Para cada problema dificil existe uma solução simples.----

Brother ,derrepente isso possa ajudar ,basta adaptar a sua realidade,testei no Linux e funciona.
Etapa 1-Crie uma pasta com o nome preprocessor_scripts no caminho /home/oracle

Selecionar tudo

mkdir -p  /home/oracle/preprocessor
Etapa 2-Entre dentro da pasta preprocessor e crie o script no vi com nome list_files.sh ,inserindo o código abaixo:

Selecionar tudo

#!/bin/bash
	cd /home/oracle
	/bin/ls -l
Etapa 3 - Execute o Script com o comando :

Selecionar tudo

./list_files.sh
Etapa 4- Conecte no banco com o usuário SYS

Selecionar tudo

[oracle@adriano preprocessor_scripts]$ sqlplus '/as sysdba'
Etapa 5- -Crie um objeto no banco com o nome PREPROCESSOR_DIRECTORY

Selecionar tudo

CREATE DIRECTORY PREPROCESSOR_DIRECTORY AS '/home/oracle/preprocessor_scripts'
Etapa 6- Crie uma tabela com o nome home_directory :

Selecionar tudo

CREATE TABLE home_directory
	(
	   fpermissions   VARCHAR2(10),
	   flink          VARCHAR2(2),
	   fowner         VARCHAR2(6),
	   fgroup         VARCHAR2(6),
	   fsize          VARCHAR2(100),
	   fdate          VARCHAR2(100),
	   fname          VARCHAR2(255)
	)  
	   ORGANIZATION EXTERNAL
	   (
	      TYPE ORACLE_LOADER
	      DEFAULT DIRECTORY PREPROCESSOR_DIRECTORY
	      ACCESS PARAMETERS
	      (               
	       records delimited by newline
	       preprocessor PREPROCESSOR_DIRECTORY:'list_files.sh'             
	       fields terminated by whitespace              
	       (
	          fpermissions   position(1:10),
	          flink          position(12:14),
	          fowner         position(15:21),
	          fgroup         position(22:28),
	          fsize          position(28:37),
	          fdate          position(37:49),
	          fname          position(50:305)
	       )
	      )
	   LOCATION ('list_files.sh')  
	   )
	REJECT LIMIT UNLIMITED   
	/
Etapa 7- Basta rodar o select e conseguirá listar os diretórios

Selecionar tudo

[oracle@adriano preprocessor_scripts]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 8 22:42:38 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from home_directory;

FPERMISSIO FL FOWNER FGROUP
---------- -- ------ ------
FSIZE
--------------------------------------------------------------------------------
FDATE
--------------------------------------------------------------------------------
FNAME
--------------------------------------------------------------------------------
total 12





FPERMISSIO FL FOWNER FGROUP
---------- -- ------ ------
FSIZE
--------------------------------------------------------------------------------
FDATE
--------------------------------------------------------------------------------
FNAME
--------------------------------------------------------------------------------
drwxr-xr-x  8 root   root
   4096 Au
ug 18  2009 d
Database

SQL> 

Bom a idéia é essa,não testei no Windows ,pois não uso o mesmo,mas basta implementar de acordo com a sua necessidade.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes