熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

存儲過程裡動態生成包含SQL語句字符串

2013-11-15 14:37:46  來源: SQL Server 

  某些時候我們希望直接傳遞字段名表名where條件甚至 SQL 語句本身等字符串到存儲過程在存儲過程裡將不同的參數值組合成不同的 SQL 語句執行Microsoft SQL Server 提供兩種方法實現這個目的
  
  使用 sp_executesql 系統存儲過程執行 Unicode 字符串
  直接組合 SQL 語句執行
  CREATE PROCEDURE p_Test
  @TableName varchar()
  AS
  declare @SQLString nvarchar()
  set @SQLString = Nselect * from + @TableName
  EXECUTE sp_executesql @SQLString
  SQL 語句裡包含嵌入參數
  CREATE PROCEDURE p_Test
  @TableName varchar()
  @UserID int
  @UserName varchar()
  AS
  declare @SQLString nvarchar()
  
  set @SQLString = Nselect * from +
  @TableName +
  N where UserID=@UserID or UserName=@UserName
  
  EXECUTE sp_executesql @SQLString
  N@UserID int @UserName varchar()
  @UserID @UserName
  
  這也是 Microsoft SQL Server 的推薦做法
  
  使用EXECUTE語句執行字符串
  CREATE PROCEDURE p_Test
  @TableName varchar()
  AS
  declare @SQLString nvarchar()
  set @SQLString = Nselect * from + @TableName
  EXEC(@SQLString)
  
  以上兩種方法支持在運行時生成 TransactSQL 腳本存儲過程和觸發器中的SQL語句有個遺憾之處則是包含 sp_executesql 或 EXECUTE 語句的批處理不能訪問執行的字符串中定義的變量或局部游標例如這兩種方法就沒法用來做傳統的 ADO 分頁
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22083.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.