无码精品不卡一区二区三区,亚洲综合另类一区无码,亚洲AV无码乱码在线观看裸奔,在线观看无码爽视频,精品少妇无码av专区在线观看 ,免费精品无码一级毛片牛牛影视 ,91天堂在线观看无码

在線咨詢
QQ咨詢
服務(wù)熱線
服務(wù)熱線:13125520620
TOP

存儲(chǔ)過程里動(dòng)態(tài)生成包含SQL語句字符串-數(shù)據(jù)庫

發(fā)布時(shí)間:2011-11-12 瀏覽:5909

  某些時(shí)候,我們希望直接傳遞字段名、表名、where條件甚至 SQL 語句本身等字符串到存儲(chǔ)過程,在存儲(chǔ)過程里將不同的參數(shù)值組合成不同的 SQL 語句執(zhí)行,Microsoft SQL Server 提供兩種方法實(shí)現(xiàn)這個(gè)目的。

一、使用 sp_executesql 系統(tǒng)存儲(chǔ)過程執(zhí)行 Unicode 字符串
1、直接組合 SQL 語句執(zhí)行
CREATE PROCEDURE p_Test1
@TableName varchar(20)
AS
declare @SQLString nvarchar(200)
set @SQLString = N'select * from ' + @TableName
EXECUTE sp_executesql @SQLString
2、SQL 語句里包含嵌入?yún)?shù)
CREATE PROCEDURE p_Test2
@TableName varchar(20),
@UserID int,
@UserName varchar(50)
AS
declare @SQLString nvarchar(200)

set @SQLString = N'select * from ' +
@TableName +
N' where UserID=@UserID or UserName=@UserName'

EXECUTE sp_executesql @SQLString,
N'@UserID int, @UserName varchar(50)',
@UserID, @UserName

這也是 Microsoft SQL Server 的推薦做法。

二、使用EXECUTE語句執(zhí)行字符串
CREATE PROCEDURE p_Test3
@TableName varchar(20)
AS
declare @SQLString nvarchar(200)
set @SQLString = N'select * from ' + @TableName
EXEC(@SQLString)

以上兩種方法支持在運(yùn)行時(shí)生成 Transact-SQL 腳本、存儲(chǔ)過程和觸發(fā)器中的SQL語句。有個(gè)遺憾之處則是包含 sp_executesql 或 EXECUTE 語句的批處理不能訪問執(zhí)行的字符串中定義的變量或局部游標(biāo),例如,這兩種方法就沒法用來做傳統(tǒng)的 ADO 分頁。

TAG
軟件定制,軟件開發(fā),瀚森HANSEN,遼寧,沈陽,撫順
0
該內(nèi)容對(duì)我有幫助