E mais uma,
Se vc conseguir fazer esta linha: * i := os_command.exec(comando_shell);* Não sei se o DBMS_SCHEDULER tem essa funcionalidade, se tiver vai ser batata. Resumindo: Executar no shell do windows com a mesma conta do usuario que acessa a impressora, seu problema vai acabar. Porque não convém mexer na conta onde o Oracle executa (provavelmente deve ter sido instalado como "network service, ou system, localsystem" ) Essa select aqui poderia levar o login e senha junto, pra prever essas situações. select prt_user_password, prt_path, prt_dir into pass, path, dir from printer where prt_printer = iNamePrinter; 2015-03-11 17:59 GMT-03:00 angelo <angelolis...@gmail.com>: > Milton > > Vou te fazer uma pergunta, que talvez seja crucial pra matar essa > charada.. Nem tem a ver com Oracle agora, vc vai entender porque: > > Você sabe qual usuario ( do windows ) o processo oracle está sendo > executado ? > > Porque pergunto isso, porque quando vc passa a execução para o sistema > operacional... o cara que vai rodar o comando para mandar a impressao > executar, está executando sob um determinado usuario da maquina. Esse > usuario pode ser tanto uma conta local ou uma conta do dominio. > > E como você está enviando a impressao para um share na rede, esse usuario > tambem precisa ter permissao para acessar o mesmo. > Por isso que quando vc testa no computador, funciona e na aplicacao não... > eu desconfio que o problema esteja passando por ai > > > Vou te dar um exemplo pratico: > > Na empresa, nós temos um sistema de WMS executando em um depósito. A > impressao de etiqueta da mercadoria, com o codigo de barras e o mais, nao é > enviada diretamente pelo Oracle mas pelo sistema e é exatamente dessa forma > que vc comentou.. é impressora Zebra também, datamax.. é gerado um > arquivinho com os comandos que a impressora zebra entende e copiando para o > share imprime. Poderia ser assim também mas vai cair na questao da conta do > computador. > > Essa conta que faz a impressao tem permissao de imprimir no > compartilhamento > No meu caso, nós combinamos com o operador logistico de criar o > compartilhamento, amarrado a uma conta, com a mesma senha, para ficar igual > ao windows onde roda o sistema. > > > É uma peculiaridade de windows, isso. > Verifica o processo do Oracle que esta em execucao a maquina (se vc tiver > aceso a ela, veja qual conta está sendo executada) > > > Eu to desconfiando fortemente que seu problema seja esse. > > > > > 2015-03-11 17:02 GMT-03:00 'Milton Bastos Henriquis Jr.' > miltonbas...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br>: > > >> >> Chiappa, executei manualmente: >> >> c:\windows\system32\cmd.exe /c c:\wyms_print\i9Print.bat >> >> Direto no DOS, ok, funcionou. >> Via PL/SQL, negativo, retornou erro. >> >> Abri o link que vc enviou, mas eu acho que são casos diferentes, pois ali >> é via DBMS_SCHEDULER, enquanto eu estou usando uma package específica para >> execução de comandos do sistema operacional. >> Já usei outras vezes e nunca precisar especificar o interpretador! >> >> >> >> Att, >> >> >> >> >> Em 11 de março de 2015 16:31, jlchia...@yahoo.com.br [oracle_br] < >> oracle_br@yahoogrupos.com.br> escreveu: >> >>> >>> >>> Então : eu estou chutando, mas via de regra o script *** TEM *** que ser >>> INTERPRETADO pelo Sistema Operacional, ele ** não É ** um executável de >>> direito : assim sendo, vc tem que passar como argumento pra rotina que >>> executa comando externo uma CHAMADA PARA O INTERPRETADOR, que no caso do >>> Windows é o cmd.exe , veja (por exemplo) em >>> https://community.oracle.com/message/2739501 que ele passa >>> 'c:\windows\system32\cmd.exe /c fullpath\nomedobat.bat' , e NÂO apenas o >>> path\nomedo.bat, yes ??? >>> >>> []s >>> >>> Chiappa >>> >> >> >> > >