sql >> Base de Datos >  >> RDS >> Oracle

Poner el resultado seleccionado en una variable ksh

Como esquema básico, puede ejecutar SQL*Plus con un heredoc para realizar la consulta y asignar el resultado a una variable:

P_NUMBER=`sqlplus -s /nolog <<!EOF
connect username/password
whenever sqlerror exit failure
set pagesize 0
set feedback off
select your_value from your_table where your_key = 'something'; 
exit 0
!EOF`

Encerrar en comillas graves asigna el resultado a la variable. $P_NUMBER mantendrá el valor que obtuvo su consulta (o un mensaje de error si las credenciales eran incorrectas, por ejemplo). Ayuda si está seguro de que la consulta devolverá exactamente un resultado. También puede probar el código de retorno con $? para buscar errores, antes de intentar usar su variable.

Incluyendo el -s marcar, desactivar los comentarios y establecer el tamaño de la página en cero, suprimen colectivamente todo el ruido para que solo obtengas el resultado y no tengas que eliminar banners, encabezados, etc.

Y finalmente he usado /nolog y pon el connect declaración dentro del heredoc para que las credenciales no aparezcan en la lista de procesos, que es un problema de seguridad que a menudo se pasa por alto. Si no desea hacer eso, coloque las credenciales como sqlplus username/passwd , puede agregar el -l marca para que solo intente iniciar sesión una vez; de lo contrario, si el inicio de sesión falla por alguna razón, intentará usar el resto del heredoc como credenciales adicionales y puede parecer que se bloquea con scripts cortos.