Uso de variables en consultas SQL

En una consulta SQL se pueden usar tanto objetos de variable como valores de cadena. Para utilizar variables en una consulta SQL, dicha consulta debe escribirse como una fórmula, es decir, que debe comenzar con el signo igual (=) y contener cadenas concatenadas con la y anglosajona (&).

Puede utilizar variables en lugar de nombres de tabla o combinarlas con la cláusula WHERE en vez de usar valores de filtro.

Uso de una variable para el nombre de tabla

En lugar de especificar un nombre de tabla explícito, se puede crear una variable que contenga un nombre de tabla y ejecutar una instrucción de selección en la variable:

="SELECT * FROM "&GlobalVariables.TableName.Text
	 

Esto es equivalente a:

SELECT * FROM [TableName]
	 

Uso de una variable para un valor de filtro

Se puede crear una variable para contener el nombre de un producto:

="SELECT * FROM Products WHERE ProductName =’"&
		GlobalVariables.ProductName.Text&"’"
	 

Esto es equivalente a esta instrucción Select de la tabla Products:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

Si la variable devuelve un valor de cadena, debe encerrarse entre comillas simples (’). Si la variable devuelve un valor numérico, no es necesario. Por ejemplo:

="SELECT * FROM Products WHERE ProductID="&
		GlobalVariables.ProductID.Text
	 

Sintaxis específica de base de datos

Hay diferencias en la forma en la que los proveedores de bases de datos implementan las instrucciones SQL. Las listas relacionales se definen mediante instrucciones SQL. Por consiguiente, es posible que los diseñadores de informes tengan que escribir varias versiones de la misma instrucción para asegurarse de que la definición de la lista funcionará con tipos de conexión de datos diferentes.

Si se utilizan variables en consultas SQL, la sintaxis necesaria depende del tipo de base de datos en la que se escriba la consulta. Por ejemplo, esta instrucción está escrita en SQL estándar:

=" SELECT Id, AccCde FROM LdgA where AccCde like '"&GlobalVariables.GV_WhereClause.Text&"' "

Para una base de datos Oracle, la instrucción sería la siguiente:

=" SELECT ""Id"", ""AccCde"" FROM DES.LDGA where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "

Para una base de datos DB2, la instrucción sería la siguiente:

=" SELECT ""Id"", ""AccCde"" FROM ADMIN_DEV.""LdgA"" where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "