Otra de las capacidades que nos proporciona PowerBuilder, es la de soportar SQL incrustado dentro del código, sin necesidad de componentes adicionales, sino que el propio PowerScript reconoce tanto SQL estático (con todos los datos conocidos en tiempo de compilación) como dinámico (construido en tiempo de ejecución a partir, por ejemplo, de una variable string).
Dentro de una función podemos realizar un SELECT y retornar el resultado en una variable, comprobar si cierto registro existe, recuperar la descripción asociada a un código o cualquier cosa. Esto es muy cómodo, ya que nos permite realizar consultas sencillas sin tener que insertar (o crear en tiempo de ejecución) componentes adicionales.
También es posible ejecutar consultas a partir de una cadena de texto, ya sea completamente o parcialmente dinámicas. Es decir, podemos tener una cadena con la sentencia a ejecutar, o bien, una cadena con el objeto, con las columnas, etc.
Instrucción parcialmente dinámica (“tabla” es una variable string que contiene el nombre de una tabla):
SELECT *
FROM :tabla;
Intrucción completamente dinámica (“sentencia” es una variable string que contiene la sentencia):
sentencia = "DELETE FROM FACTURAS"
EXECUTE :sentencia;
Una de las utilidades de esto es, en vez de incrustar la sentencia directamente en el código, podemos almacenarla en una cadena (que leemos de fichero, o de la propia base de datos) y después ejecutar esta sentencia. De este modo se independiza más el programa de la base de datos, ya que un cambio en el esquema no requeriría una nueva compilación.
Desde mi punto de vista, el SQL incrustado es bastante útil y cómodo, aunque también tengo que decir que los lenguajes modernos huyen de esta técnica, ya que ata demasiado la aplicación a la base de datos (algo similar es el Pro*C de Oracle, que es una tecnología que ya tiene sus añitos y empieza a estar en desuso).