佩特來項目經驗小集合(2)___組合查詢預存程序,報錯 "varchar JBID='' 轉換成資料類型 int 時失敗",

來源:互聯網
上載者:User

佩特來項目經驗小集合(2)___組合查詢預存程序,報錯 "varchar JBID='' 轉換成資料類型 int 時失敗",
   今天寫一個組合查詢的預存程序遇到這樣一個問題:在將 varchar 值 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1 and JBID ='' 轉換成資料類型 int 時失敗。錯誤詳情:    經百度:字串變數和整型變數串連不能用+串連。於是我採用cast()函數將DLSJB這個整型變數轉換成字串,這樣問題就解決了。正確代碼如下所示:

ALTER PROCEDURE [dbo].[Proc_SH_WXJDList]@DH varchar(50),       --單號@DLSJB int,    --代理商層級ID@DLSName varchar(100)   --代理商姓名ASBEGINDeclare @sqlStr varchar(800)  --儲存sql語句Set @sqlStr = 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1'--合成sql語句,不輸入條件則選擇全部 if(@DH!='')--判斷是寫單號set @sqlStr = @sqlStr + ' and DH like ''%' + @DH + '%''' if(@DLSJB!= -1 )                    --判斷是否選擇代理商層級set @sqlStr = @sqlStr + ' and JBID ='+''''+cast(@DLSJB as varchar(5))+''''if(@DLSName!='')--判斷是否選擇代理商名set @sqlStr = @sqlStr + ' and DLSName like ''%' + @DLSName + '%''' EXEC (@sqlStr + 'ORDER BY DH DESC')END

   cast()是一個轉換函式,跟我們在asp.net中使用的Convert函數一樣,都是一種資料類型轉換到另一種資料類型。這篇文章恰恰是使用cast()函數使整型變數強制轉換成字串型,這樣字串型之間就可以使用+進行串連了。  
 


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.