WEB开发网
开发学院数据库MSSQL Server 在SQL Server中生成动态SQL语句 阅读

在SQL Server中生成动态SQL语句

 2008-04-14 09:54:38 来源:WEB开发网   
核心提示:在需要解决某个棘手的数据库问题时,生成SQL语句可作为一种强大的工具,在SQL Server中生成动态SQL语句,虽然我们在使用它时必须十分小心,本文将探讨如何用这种功能来轻松地生成SQL语句,首先,我们需要一个表和一些查询的数据, 动态SQL语句一个动态的SQL语句是在执行时创建的,不同的条件生成不同的SQL语句

在需要解决某个棘手的数据库问题时,生成SQL语句可作为一种强大的工具,虽然我们在使用它时必须十分小心。本文将探讨如何用这种功能来轻松地生成SQL语句。

动态SQL语句

一个动态的SQL语句是在执行时创建的,不同的条件生成不同的SQL语句。在我们需要决定运行时有哪些字段从SELECT语句返回时,在决定查询的不同标准时,动态地创建这些语句是很有用处的。

这些SQL字符串不是为了语法分析以便于查找错误,因为它们是在运行时生成的,而且它们有可能将安全漏洞引入到你的数据库中。此外,SQL字符串有可能成为一个调试上恶梦,这就是为什么笔者并非动态生成SQL语句的一个痴迷者的原因。但在有些情况下,这种功能却是很不错的。

一个动态的例子

笔者经常回答的一个问题是“我如何将我的WHERE语句传递给一个存储过程?”,而且经常看到类似于下面的情况,其TSQL语法是非法的。

  DECLARE@WhereClauseNVARCHAR(2000)
  SET@WhereClause='Prouct=''Computer'''
  SELECT*FROMSalesHistoryWHERE@WhereClause

但情况并不如此简单,有时,需要额外的标准,而且随着数据表的逐渐增大,就需要越来越多的标准。这通常可以通过为不同的标准编写不同的存储过程而解决,不过有时每次执行的这种标准是如此迥然不同,以至于在一个存储过程中包含所有的可能性可能成为一个沉重的负担。虽然这些存储过程可以用于考虑每一个可能的WHERE语句,(当然这要依赖于不同的参数) ,这通常会引起性能上的降低,因为在WHERE子句中有太多的条件。

让我们看看如何创建一个简单的动态查询。首先,我们需要一个表和一些查询的数据。下面的脚本创建了SalesHistory表并将数据装载到其中。

1 2 3  下一页

Tags:SQL Server 生成

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接