存儲過程傳遞參數時出現類型轉換錯誤!如:varchar轉換為int時出錯


碰到過這個問題:當時的程序大致如下:

create procedure myproc @tablename varchar(20), @idnum int

as

declare @sqlstr varchar(200)

set @sqlstr='select * from '+@tablename+' where id='+@idnum

execute (@sqlstr)

Go

    在執行上述存儲過程的時候(execute myproc 'test',2),系統報告"varchar轉換為int類型時錯誤"。

錯誤的原因在於set @sqlstr='select * from '+@tablename+' where id='+@idnum這一行。

改正的方法可以有幾種:

1:直接將@idnum 定義為varchar類型的數據即可

2:在存儲過程中加入一個@varchar 類型的變量,先將@idnum賦值給它,在用其代替@idnum即可。即:

create procedure myproc @tablename varchar(20), @idnum int

as

declare @sqlstr varchar(200)

declare @tempstr varchar(10)

set @tempstr=@idnum

set @sqlstr='select * from '+@tablename+' where id='+@itempstr

execute (@sqlstr)

Go

由此可見發生錯誤的原因可能在於生成@sqlstr時,出現varchar與int(numeric)類型的操作時(注意varchar在前),系統會嘗試將varchar轉換為int(或numeric),因而出現錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM