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

在SQL Server中生成动态SQL语句

 2008-04-14 09:54:38 来源:WEB开发网   
核心提示: CREATETABLE[dbo].[SalesHistory]([SaleID][int]IDENTITY(1,1),[Product][varchar](10)NULL,[SaleDate][datetime]NULL,[SalePrice][money]NULL)GOSETNOCOUN

  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

Tags:SQL Server 生成

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