SQL, pl / sql, sqlplus: como retornar uma variável para o arquivo batch DOS?

2

Eu tenho um arquivo em lotes do DOS que invoca o sqlplus, que executa algum SQL básico contido em outro arquivo .sql, e eu quero que a última parte dele retorne um valor de volta ao arquivo batch dos. No entanto, embora existam muitos exemplos via Google sobre como fazer isso usando um shell Unix, o mais próximo que eu recebo para arquivos em lotes do DOS é algo como isto:

SELECT
  MAX(magicnumber)
INTO
  :ret_val
FROM
  ABCD.EFGH

exit :ret_val

No entanto, isso não funciona para mim - o sqlplus apenas me fornece uma mensagem de uso para o EXIT.

Se eu fizer "sair 15", por exemplo, o arquivo em lotes do DOS informará corretamente o código de retorno (usando errorlevel), de modo que a parte esteja correta.

Existe alguma coisa de sintaxe que estou perdendo? Devo observar que sou muito novo no material SQL, então pode ser uma coisa muito óbvia que não estou vendo ... Obrigado!

    
por weiji 13.07.2010 / 01:00

1 resposta

0

Uma espécie de solução alternativa é simplesmente imprimir o resultado e, em seguida, capturar essa saída da mesma forma que os shells do Unix. O usuário "shoblock" em dbforums.com fornece este exemplo aqui:

link

Em essência, o arquivo bat tem:

FOR /F "usebackq delims=!" %%i IN ('sqlplus -s u/p@db @t') DO set xresult=%%i
echo %xresult%

Por enquanto eu estou indo com isso.

    
por 13.07.2010 / 02:59