第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎么能傳一條sql 到存儲過程中?

怎么能傳一條sql 到存儲過程中?

人到中年有點甜 2018-12-03 17:12:02
怎么能傳一條sql 到存儲過程中?
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經(jīng)驗 獲得超7個贊

1. 組裝的SQL語句錯了:你的語句中將字符串類型跟表類型加到一起了。 2. 表變量的使用方式錯誤:作用域的問題。 3. 表變量的使用方式不正確:表變量存儲方式的問題。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 你的這個SQL語句并沒有涉及表變量的其他問題,因此這里就以上幾個問題來修正你的代碼。 僅修正問題1、2: declare @tb table(byer ntext not null,fare money not null) ------> create table #tb (byer ntext not null,fare money not null) exec (N'insert '+@tb+''+@sqlone) ------> exec (N'insert '+'#tb '+@sqlone) 后面相應的@tb全部改為#tb,即可 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 上面的寫法有不少的性能問題,不管是SQL語句本身還是整個方案,包括我上面給出的修改方案。所以,現(xiàn)在考慮修正第3個問題 下面給出一個稍微好一些的寫法(注意,方案本身的缺陷只能根據(jù)你的實際業(yè)務來解決了)整個存儲過程可以修改為以下形式: EXEC (N'SELECT SUM(dbo.f_split(byer,'','')) AS number, SUM(fare) AS Totmoney FROM (' + @sqlone + ') AS A') 里面的byer和fare需要你自己再調整,那就看你傳入的SQL語句中的字段命名是怎么樣的了。 這樣修改之后,能夠避免一些不必要的性能損失。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 最后補充一點:修改后的方案雖然會比之前的好一些,不過整體方案仍然不是很合理,而且這樣的存儲過程還會降低應用程序的可維護性。建議在今后的設計中盡量不要使用這樣的方案。

查看完整回答
反對 回復 2018-12-07
?
長風秋雁

TA貢獻1757條經(jīng)驗 獲得超7個贊


你這種方式定義的@tb是一個表變量,當使用EXEC(@sql)后,@tb表變量就被自動銷毀,無法再被訪問了。 如果希望在EXEC(@sql)之后能繼續(xù)被訪問,可以采用創(chuàng)建局部臨時表(#)的方式。


查看完整回答
反對 回復 2018-12-07
  • 2 回答
  • 0 關注
  • 623 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號