SqlServer存儲(chǔ)過程實(shí)現(xiàn)及拼接sql的注意點(diǎn)
這里我昨天碰到的問題就是執(zhí)行一段根據(jù)變量tableName對不同的表進(jìn)行字段狀態(tài)的更改。由于服務(wù)器原因,我不能直接在數(shù)據(jù)訪問層寫SQL,所以只好抽離出來放到存儲(chǔ)過程里面。
這里就出現(xiàn)了一個(gè)問題,我花費(fèi)了好久才弄通!
其實(shí)就是很簡單的一個(gè)SQL語句:
update table1 set field1=value1,field2 = value2 where id = id
我寫成什么樣子了呢?大家且看:
declare @tableName nvarchar(50), @field1 int, @field2 nvarchar, @id int declare @sql nvarchar(max) set @sql = 'update '+@tableName+' set field1= '+@field1+',field2= '+@field2+' where id='+@id exec @sql
有過這方面經(jīng)驗(yàn)的同學(xué)肯定知道這樣寫明顯是錯(cuò)的,sql會(huì)報(bào)異常,說無法講nvarchar轉(zhuǎn)換成int類型
那么這個(gè)錯(cuò)誤是具體是值什么呢?其實(shí)就是說,在拼接sql的時(shí)候,這個(gè)@sql要是一個(gè)字符串類型,所有的變量也都必須用字符串表示,我上面的@field1和@id是int,所以要轉(zhuǎn)化成nvarchar類型,并且是nvarchar類型的變量(字段)必須用單引號(hào)括起來;注:在sql中單引號(hào)是用兩個(gè)單引號(hào)表示的
所以經(jīng)過修改,正確的拼接sql代碼是:
set @sql='update '+@tableName+ ' set field1='+cast(@field1 as varchar)+',field2='''+@field2+''' where id='+CAST(@id as varchar)
這個(gè)問題其實(shí)非常簡單,但是由于我在SQL方面的知識(shí)很是不足,所以在這里記錄來鞏固自己。
以上所述是小編給大家介紹的SqlServer存儲(chǔ)過程實(shí)現(xiàn)及拼接sql的注意點(diǎn),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
SQL Server的鏈接服務(wù)器技術(shù)小結(jié)
這篇文章主要介紹了SQL Server的鏈接服務(wù)器技術(shù)的相關(guān)資料,需要的朋友可以參考下2014-07-07SQL語句計(jì)算兩個(gè)日期之間有多少個(gè)工作日的方法
本文的主要內(nèi)容是用SQL語言計(jì)算兩個(gè)日期間有多少個(gè)工作日,需要的朋友可以參考下2015-08-08SQL Server 遠(yuǎn)程連接服務(wù)器詳細(xì)配置(sp_addlinkedserver)
這篇文章主要介紹了SQL Server 遠(yuǎn)程連接服務(wù)器詳細(xì)配置(sp_addlinkedserver),需要的朋友可以參考下2017-01-01SQL Server服務(wù)啟動(dòng)的實(shí)現(xiàn)步驟
本文主要介紹了SQL Server服務(wù)啟動(dòng)的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07SQL Server中通過reverse取某個(gè)最后一次出現(xiàn)的符號(hào)后面的內(nèi)容(字符串反轉(zhuǎn))
昨天在項(xiàng)目中遇到了一個(gè)非常簡單的問題,需要把SQL Server數(shù)據(jù)庫中保存的一段路徑地址取出其文件名,但SQL Server又沒有現(xiàn)成的方法,最后在網(wǎng)上找到這樣的一個(gè)方法,原理是先將字符串反轉(zhuǎn),取出第一個(gè)/的位置,從頭進(jìn)行截取后再次反轉(zhuǎn)2012-07-07生成300個(gè)不同的隨機(jī)數(shù)的SQL語句
最近在做一個(gè)項(xiàng)目,涉及到要生成N個(gè)8位的不重復(fù)的純數(shù)字隨機(jī)數(shù)作為優(yōu)惠碼,研究了一番,把結(jié)果分享給大家2014-08-08