在SQL Server中生成动态SQL语句
http://tech.ddvip.com 2008年04月14日 社区交流
内容摘要:一个动态的SQL语句是在执行时创建的,不同的条件生成不同的SQL语句。在我们需要决定运行时有哪些字段从SELECT语句返回时,在决定查询的不同标准时,动态地创建这些语句是很有用处的。
CREATETABLE[dbo].[SalesHistory]
(
[SaleID][int]IDENTITY(1,1),
[Product][varchar](10)NULL,
[SaleDate][datetime]NULL,
[SalePrice][money]NULL
)
GO
SETNOCOUNTON
DECLARE@iINT
SET@i=1
WHILE(@i<=5000)
BEGIN
INSERTINTO[SalesHistory](Product,SaleDate,SalePrice)
VALUES('Computer',DATEADD(ww,@i,'3/11/1919'),
DATEPART(ms,GETDATE())+(@i+57))
INSERTINTO[SalesHistory](Product,SaleDate,SalePrice)
VALUES('BigScreen',DATEADD(ww,@i,'3/11/1927'),
DATEPART(ms,GETDATE())+(@i+13))
INSERTINTO[SalesHistory](Product,SaleDate,SalePrice)
VALUES('PoolTable',DATEADD(ww,@i,'3/11/1908'),
DATEPART(ms,GETDATE())+(@i+29))
SET@i=@i+1
END
下面我们创建一个可以接受WHERE子句的存储过程。为了达成这个例子的目的,笔者将假定WHERE子句是从调用客户应用程序中动态生成的。
CREATEPROCEDUREusp_GetSalesHistory
(
@WhereClauseNVARCHAR(2000)=NULL
)
AS
BEGIN
DECLARE@SelectStatementNVARCHAR(2000)
DECLARE@FullStatementNVARCHAR(4000)
SET@SelectStatement='SELECTTOP5*FROMSalesHistory'
SET@FullStatement=@SelectStatement+ISNULL(@WhereClause,'')
PRINT@FullStatement
EXECUTEsp_executesql@FullStatement
/*
--也可用EXECUTE()执行相同的语句
EXECUTE(@FullStatement)
*/
END
来源:IT专家网 作者:阿林 责编:豆豆技术应用
- SQL Server 2008 教程
- SQL Server 2005 教程
- SQL Server 安全设置
- SQL Server 故障解决
- SQL Server 安装配置
- SQL Server 备份恢复
- SQL Server 性能调优
- SQL Server 存储过程
- SQL Server 函数
- SQL Server 事务
- SQL Server 查询
- SQL Server 索引
- SQL Server 入门教程
- SQL Server 数据类型
- SQL Server 数据库表
- SQL Server T-SQL
- SQL Server 语句
- SQL Server 死锁
- SQL Server 加密
- SQL Server 数据库连接
- SQL Server 数据仓库
- SQL Server 数据库管理
- 更多SQL Server 专题>>>