Použití proměnných v dotazech SQL

V dotazu SQL je možné používat objekty proměnné i hodnoty řetězců. Chcete-li použít proměnné v dotazu SQL, musí být dotaz zapsán jako vzorec – začínat rovnítkem (=) a obsahovat řetězce zřetězené znakem et (&).

Proměnné můžete používat místo názvu tabulky nebo je zkombinovat s klauzulí WHERE místo hodnot filtru.

Použití proměnné pro název tabulky

Namísto zadání explicitního názvu tabulky můžete vytvořit proměnnou, která bude obsahovat název tabulky a spustit příkaz výběru pro proměnnou:

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

Jedná se o ekvivalent k:

SELECT * FROM [TableName]
	 

Použití proměnné pro hodnotu filtru

Můžete vytvořit proměnnou, která bude obsahovat název produktu:

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

Jednalo by se o ekvivalent k tomuto příkazu Výběr z tabulky Produkty:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

Pokud proměnná vrací hodnotu řetězce, musí být uzavřena v jednoduchých uvozovkách (’). Pokud proměnná vrací číselnou hodnotu, není to nutné. Například:

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

Syntaxe pro konkrétní databázi

Implementace jazyka SQL se může mezi poskytovateli různých databází lišit. Relační seznamy jsou definovány příkazy SQL. Může proto být nutné, aby návrháři reportů zapisovali několik verzí stejného příkazu, aby byla zajištěna funkčnost definice seznamu pro různé typy datového propojení.

Pokud používáte proměnné v dotazech SQL, vyžadovaná syntaxe závisí na typu databáze, pro kterou je dotaz napsán. Například tento příkaz je napsán ve standardní implementaci SQL:

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

Pro databáze Oracle by měl příkaz tento tvar:

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

Pro databáze DB2 by měl příkaz tento tvar:

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