在 SQL 查询中使用变量

可在 SQL 查询和字符串值中使用变量对象。若要在 SQL 查询中使用变量,必须以公式的形式编写查询,必须以等号 (=) 开头,还必须含有用 & 连接的字符串。

可以使用变量替代表名称,也可将其与 WHERE 子句一同使用,替代筛选器值。

变量用于表名称

可不指定明确的表名称,转而创建变量以存储表名称,然后对变量执行选择语句:

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

以上代码相当于:

SELECT * FROM [TableName]
	 

变量用于筛选器值

可创建变量以存储产品名称:

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

以上代码相当于下面的从“产品”表中选择的语句:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

如果变量返回的是字符串值,则必须在其两侧添加单引号 (’)。如果变量返回的是数值,则不必执行上述操作。例如:

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

特定于数据库的语法

数据库提供程序实施 SQL 有不同的方法。关系列表由 SQL 语句定义。因此,报告设计器必须写入同一语句的若干版本,以确保列表定义能够用于不同类型的数据连接。

如果在 SQL 查询中使用变量,则所需的语法将取决于写入查询的数据库类型。例如,此语句以标准的 SQL 形式写入:

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

对于 Oracle 数据库,语句为:

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

对于 DB2 数据库,语句为:

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