国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 贺州市| 蕉岭县| 措勤县| 道孚县| 长子县| 墨竹工卡县| 安宁市| 余干县| 日照市| 和田县| 松溪县| 资中县| 密云县| 九台市| 郯城县| 河曲县| 灯塔市| 精河县| 湖南省| 兴和县| 清水县| 德兴市| 徐水县| 贵定县| 泉州市| 同心县| 南靖县| 监利县| 田东县| 林周县| 疏附县| 宜黄县| 瑞安市| 宜阳县| 乐业县| 安义县| 离岛区| 忻州市| 黑河市| 毕节市| 宝坻区|