程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SqlServer存儲進程完成及拼接sql的留意點

SqlServer存儲進程完成及拼接sql的留意點

編輯:MSSQL

SqlServer存儲進程完成及拼接sql的留意點。本站提示廣大學習愛好者:(SqlServer存儲進程完成及拼接sql的留意點)文章只能為提供參考,不一定能成為您想要的結果。以下是SqlServer存儲進程完成及拼接sql的留意點正文


這裡我昨天碰著的成績就是履行一段依據變量tableName對分歧的表停止字段狀況的更改。因為辦事器緣由,我不克不及直接在數據拜訪層寫SQL,所以只好抽離出來放到存儲進程外面。

這裡就湧現了一個成績,我消費了很久才弄通!

  其實就是很簡略的一個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 

  有過這方面經歷的同窗確定曉得如許寫顯著是錯的,sql會報異常,說沒法講nvarchar轉換成int類型

  那末這個毛病是詳細是值甚麼呢?其實就是說,在拼接sql的時刻,這個@sql如果一個字符串類型,一切的變量也都必需用字符串表現,我下面的@field1和@id是int,所以要轉化成nvarchar類型,而且是nvarchar類型的變量(字段)必需用單引號括起來;注:在sql中單引號是用兩個單引號表現的

  所以經由修正,准確的拼接sql代碼是:

set @sql='update '+@tableName+ ' set field1='+cast(@field1 as varchar)+',field2='''+@field2+''' where id='+CAST(@id as varchar) 

  這個成績其實異常簡略,然則因為我在SQL方面的常識很是缺乏,所以在這裡記載來穩固本身。

以上所述是小編給年夜家引見的SqlServer存儲進程完成及拼接sql的留意點,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved