Plantillas SQL

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Trabajar con SQL >

Plantillas SQL

Con DatabaseSpy Enterprise Edition puede crear y ejecutar instrucciones SQL que contengan parámetros (en adelante plantillas SQL). La única diferencia entre las consultas SQL estándar y las plantillas SQL es que estas últimas contienen marcadores de posición para parámetros. Por ejemplo, la instrucción SELECT que aparece a continuación es una plantilla que define dos parámetros :color y :size.

 

SELECT id FROM products WHERE color = :color AND size > :size;

 

Puede definir parámetros no solo en instrucciones SELECT sino también en otro tipo de instrucciones (como INSERT o UPDATE). Por ejemplo, aquí pude ver una instrucción INSERT con parámetros:

 

INSERT INTO users (first_name,last_name,email,created_at,updated_at) VALUES (:fname,:lname,:email,CURRENT_TIMESTAMP,NULL);

 

Las plantillas INSERT como la anterior pueden simplificar la transferencia de grandes cantidades de datos de una tabla o vista a otra (incluso entre bases de datos distintas). Concretamente, cuando necesite rellenar una tabla, podrá generar varias instrucciones INSERT en solo unos pasos a partir de la plantilla dada (ver más abajo).

 

Notas:

 

Para que DatabaseSpy los reconozca correctamente, los parámetros de las instrucciones SQL deben ir precedidos de dos puntos ( : ).
Los parámetros pueden sustituir valores dentro de instrucciones. Sin embargo, para evitar inserciones SQL, no se deben utilizar para sustituir palabras claves reservadas ni identificadores SQL (como nombres de columna o tabla).
Los parámetros se consideran texto por defecto y las consultas con parámetros fallarán con determinadas conexiones de base de datos a no ser que cambie explícitamente el tipo de parámetro (ver más abajo).

 

Cambiar el tipo de parámetro

Los parámetros se tratan por defecto como de tipo text o varchar, lo cual provoca errores cuando se realizan consultas con parámetros con ciertos controladores de base de datos (p. ej. con conexiones ADO.NET o JDBC con SQL Server). Cuando esto ocurra podrá especificar el tipo de forma explícita y, si procede, también la precisión, la escala o el tamaño del parámetro. Esto se hace añadiendo un comentario justo después del parámetro.

 

Aquí puede ver un ejemplo para tipos de cadena:

 

SELECT [col1],
      [col2]
FROM   [mytable] WHERE col1 = :p1 /*# varchar, size:max */

 

En el ejemplo anterior el tipo de parámetro se establece de forma explícita como varchar y su tamaño (size) se define como max. También se puede usar el modificador de longitud length en lugar del de tamaño size.

 

Aquí puede ver un ejemplo para tipos numéricos:

 

SELECT [col1],
      [col2]
FROM   [mytable] WHERE col1 = :p1 /*# decimal, precision:23, scale:4 */

 

En el ejemplo anterior el tipo de parámetro se establece de forma explícita como decimal, la precisión (precision) o número total de dígitos se define como 23 y la escala (scale) o número de dígitos a la derecha del punto decimal se establece en 4. También puede usar la abreviatura prec para la precisión. Tanto precision como scale exigen valores enteros.

 

A continuación puede ver otros ejemplos de atributo que pueden aparecer detrás de un parámetro:

 

/*# float */
 
/*# decimal, precision:23, scale:4 */
 
/*# decimal, prec:23, scale:4 */
 
/*# varchar, size:max */
 
/*# nvarchar, size:32 */
 
/*# varchar, length:255 */
 
/*# number, precision:38, scale:0 */

 

Debe tener en cuenta que:

 

El carácter # indica a DatabaseSpy que debe ocuparse del parámetro correspondiente con el tipo y el tamaño declarados.
El tipo de datos y los atributos que le siguen deben estar separados por una coma. Además los atributos deben ir separados por comas.
Los atributos que no sean prec o precision, scale, size o length no se reconocen. Para poder ejecutar la consulta con parámetros correctamente pueden ser necesarios todos estos atributos, solo algunos o ninguno, dependiendo del controlador de base de datos y de cuánta información sea capaz de determinar automáticamente cuando se prepare la instrucción.

 

Ejecutar una consulta con parámetros

1.Introduzca o genera una instrucción SQL en el Editor SQL y compruebe que contenga al menos un parámetro. Por ejemplo, la instrucción INSERT de la imagen contiene tres parámetros:

dbs_sql_template1

2.Haga clic en Ejecutar ic_execute-sql o en Ejecutar para editar datos ic_edit-data en la barra de herramientas del Editor SQL.
3.Rellene los valores de los parámetros. Por ejemplo:

dbs_sql_template2

También puede especificar varias filas de parámetros para la consulta. Para ello haga clic en los botones Anexar nuevo ds_ic_append_param o Insertar nuevo ds_ic_insert_param. El botón Anexar nuevo añade una fila de parámetros después de las filas que ya existen, mientras que Insertar nuevo añade un parámetro en la posición actual (p. ej. entre dos filas).

dbs_sql_template3

4.Haga clic en Aceptar. DatabaseSpy ejecuta la consulta con los parámetros especificados y muestra el resultado de la ejecución en la pestaña Resultados.

 

Notas:

 

Si el Editor SQL contiene varias instrucciones SQL, el cuadro de diálogo "Valores de parámetro" contendrá una pestaña por cada instrucción SQL que contenga parámetros. Además, una vez ejecutada la consulta, aparecerá una pestaña Resultados por cada instrucción con parámetros.
DatabaseSpy recuerda los últimos 25 valores de parámetro introducidos en el cuadro de diálogo "Valores de parámetro". Para usar un valor anterior selecciónelo en la lista desplegable que hay para cada parámetro.

 

Guardar consultas con parámetro como plantilla SQL

Una consulta que contiene parámetros se puede guardar para poder usarla más tarde, al igual que los archivos SQL. Hay varias maneras de guardar el contenido del editor SQL como plantilla SQL:

 

En el menú Archivo haga clic en el comando Guardar (o Guardar como).
Haga clic en el botón Guardar de la barra de herramientas.
Pulse Ctrl + S.

 

Los archivos de plantilla SQL se guardan con la extensión .sql, al igual que los scripts SQL. Para que el usuario pueda distinguir fácilmente entre plantillas y scripts SQL, el proyecto de DatabaseSpy contiene una carpeta especial llamada "Plantillas SQL".

dbs_sql_template4

Todas las plantillas SQL creadas para el proyecto deben estar en la carpeta "Plantillas SQL". DatabaseSPy no puede ejecutar la plantilla SQL con valores hasta que ésta se encuentre en la carpeta "Plantillas SQL" (ver más abajo).

 

Ejecutar plantillas SQL

Puede ejecutar plantillas SQL con conjuntos (filas) de valores aportados de forma dinámica. Cuando se ejecuta una plantilla SQL, DatabaseSpy reemplaza todos los marcadores de posición de parámetro encontrados en la plantilla con los valores dados, crea una instrucción SQL nueva por cada valor (o por cada fila de valores, dependiendo del caso) y la ejecuta en la base de datos. Por tanto, se puede generar y ejecutar un gran número de instrucciones SQL con solo hacer clic en un botón.

 

 

Requisitos

1.Cree una plantilla SQL en la ventana del Editor SQL. Por ejemplo, la plantilla SQL que aparece a continuación toma tres parámetros: :fname, :lname y :email.

INSERT INTO users (first_name,last_name,email,created_at,updated_at) VALUES (:fname,:lname,:email,CURRENT_TIMESTAMP,NULL);

Si no quiere introducir la instrucción a mano también puede hacer clic con el botón derecho en una tabla del Explorador, generar la instrucción INSERT y modificarla para añadir los parámetros (véase Generar instrucciones SQL).

 

2.Guarde la plantilla SQL y añádala al proyecto de DatabaseSpy. La plantilla SQL debe estar dentro de la carpeta "Plantillas SQL" del proyecto.

 

Ahora también puede probar si la nueva plantilla SQL se ejecuta correctamente (ejecutándola con parámetros introducidos a mano). Para probar la plantilla SQL haga clic en Ejecutar ic_execute-sql e introduzca los parámetros necesarios cuando la aplicación lo solicite (véase Ejecutar una consulta con parámetros).

 

 

Para ejecutar una plantilla con valores:

1.Conéctese a un origen de datos y recupere los datos de la tabla que contiene los valores que quiere usar como entrada para la plantilla SQL (p. ej. haga clic con el botón derecho en el Explorador y seleccione Editar datos en el menú contextual).
2.Mantenga pulsada la tecla Ctrl y seleccione celdas de la cuadrícula Resultados. Para seleccionar varias columnas haga clic en el encabezado mientras pulsa la tecla Ctrl. La plantilla SQL se ejecutará tantas veces como filas haya en la selección. Recuerde que el número de columnas seleccionadas debe coincidir con el número de parámetros que acepta la plantilla SQL. Por tanto:

 

oSi la plantilla acepta un solo parámetro, todas las celdas seleccionadas (una o más filas) deben estar en la misma columna.
oSi la plantilla acepta varios parámetros, deberá seleccionar tantas columnas como parámetros haya.

 

Por ejemplo, para una plantilla INSERT con tres parámetros, esta selección es válida:

dbs_sql_template5

También es válido seleccionar varias filas no consecutivas:

dbs_sql_template6

3.Haga clic con el botón derecho en la selección y seleccione Ejecutar plantilla con valores | <nombre de la plantilla> en el menú contextual. Todas las instrucciones generadas aparecerán en el Editor SQL y se ejecutarán.

© 2019 Altova GmbH