3.3. Introduccion de sentencias

3.3. Introduccion de sentencias Dataprix 20 October, 2009 - 11:14

Las sentencias SQL que escribamos en el cliente deberán terminar con ‘;’ o bien con ‘\g’:

demo=# select user;
   current_user
--------------
   postgres
(1 row)
demo=#

Cuando un comando ocupa más de una línea, el indicador cambia de forma y va señalando el elemento que aún no se ha completado.

 

demo=# select
demo-# user\g
   current_user
--------------
   postgres
(1 row)
demo=#

 

 

Indicadores de PostgreSQL
Indicador Significado
=# Espera una nueva sentencia
-# La sentencia aún no se ha terminado con “;” o \g
“# Una cadena en comillas dobles no se ha cerrado
‘# Una cadena en comillas simples no se ha cerrado
(# Un paréntesis no se ha cerrado

 

El cliente psql almacena la sentencia hasta que se le da la orden de enviarla al SGBD. Para visualizar el contenido del buffer donde ha almacenado la sentencia, disponemos de la orden ‘\p’:

demo=> SELECT
demo-> 2 * 10 + 1
demo-> \p
   SELECT
   2 * 10 + 1
demo-> \g
    ?column?
    ----------
       21
    (1 row)
demo=>

El cliente también dispone de una orden que permite borrar completamente
el buffer para empezar de nuevo con la sentencia:

demo=# select `Hola´\r
Query buffer reset
(cleared). demo=#

3.3.1. Expresiones y variables

3.3.1. Expresiones y variables Dataprix 20 October, 2009 - 11:27

El cliente psql dispone de multitud de prestaciones avanzadas; entre ellas (como ya hemos comentado), el soporte para sustitución de variables similar al de los shells de Unix:

demo=>\set var1 demostracion

Esta sentencia crea la variable ‘var1’ y le asigna el valor ‘demostración’. Para recuperar el valor de la variable, simplemente deberemos incluirla precedida de ‘:’ en cualquier sentencia o bien ver su valor mediante la orden ‘echo’:

demo=# \echo :var1
demostracion
demo-#

De la misma forma, psql define algunas variables especiales que pueden ser útiles para conocer detalles del servidor al que estamos conectados:

demo=# \echo :DBNAME :ENCODING :HOST :PORT :USER;
demo LATIN9 localhost 5432
postgres demo=#

El uso de variables puede ayudar en la ejecución de sentencias SQL:

demo=> \set var2 `mi_tabla´
demo=> SELECT * FROM :var2;
Se debe ser muy cuidadoso con el uso de las comillas y también es importante tener en cuenta que dentro de cadenas de caracteres no se sustituyen variables.