国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

獲取動態(tài)SQL查詢語句返回值(sp_executesql)

2024-07-21 02:48:40
字體:
供稿:網(wǎng)友
獲取動態(tài)SQL查詢語句返回值(sp_executesql)

在寫存儲過程時經(jīng)常會遇到需要拼接SQL語句的情況,一般情況下僅僅是為了執(zhí)行拼接后的語句使用exec(@sql)即可。

而今天的一個存儲過程卻需要獲取動態(tài)SQL的查詢結(jié)果。

需求描述:在某表中根據(jù)Id值查詢Cost值(表名不確定但表結(jié)構(gòu)確定,如下面的PRoduct表)

如果不考慮獲取返回值,我們這樣寫即可:

  declare @tableName varchar(50)  declare @id varchar(10)  declare @cost numeric(18,2)  declare @sql nvarchar(200)    set @tableName='Product'  set @id='1'  set @sql='select Cost from '+@tableName+' where Id='+@id  exec(@sql)

要獲取返回值首先嘗試的是下面兩個方法:

set @sql='select @cost=Cost from '+@tableName+' where Id='+@id  --錯誤方法1
set @cost=(exec(@sql))    --錯誤方法2

以上兩種方法均會報錯,求助萬能的網(wǎng)絡(luò)發(fā)現(xiàn)一個可愛的函數(shù)--sp_executesql可以滿足我們的要求:

  set @sql='select @cost=Cost from '+@tableName+' where Id=@id'  exec sp_executesql @sql, N'@cost numeric(18,2) out,@id varchar(10)', @cost out,@id

不僅能獲取返回值,還能傳參有沒有!只可惜表名依然需要拼接在SQL語句中。

注意:@sql的類型需要是'ntext/nchar/nvarchar'這三種之一。

園友萬德源的sp_executesql介紹和使用帖中有關(guān)于此函數(shù)更詳細(xì)的介紹。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中西区| 中宁县| 科技| 元氏县| 古丈县| 同江市| 民勤县| 通州市| 普陀区| 博爱县| 满洲里市| 廊坊市| 镇宁| 青海省| 福贡县| 凤凰县| 囊谦县| 中宁县| 古丈县| 南投市| 苏尼特左旗| 宜良县| 栾城县| 微博| 广水市| 敦煌市| 灵武市| 屏边| 彰武县| 武川县| 行唐县| 荥经县| 阳东县| 吉林省| 宜春市| 金塔县| 新竹市| 和龙市| 新竹市| 金塔县| 英德市|