1. ホーム
  2. sql

[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。

2022-02-05 13:57:34

質問

以下のようなプロシージャを作成しました。

CREATE procedure getdata
(
    @ID int,
    @frm varchar(250),
    @to varchar(250)
)
AS
BEGIN

DECLARE @SQL nvarchar(500)


set @SQL = 'select'
set @SQL = @SQL + ' EmpName, Address, Salary from Emp_Tb where 1=1 '

IF (@ID <> '' and @ID is not null)     
  Begin     
   SET @sql=@sql+' AND Emp_Id_Pk=' +@ID   
  End 
END

print @sql
--execute (@sql)

使って実行してみる。

**execute getdata 3,'','';**

しかし、次のようなエラーが発生します。

nvarchar値「select EmpName.Data」を変換する際に、変換に失敗しました。 アドレス, 給与 from Emp_Tb where 1=1 AND Emp_Id_Pk=' を int 型に変換する。

助けてください。

解決方法は?

文字列と整数を連結しようとしている。
必要なのは キャスト @ID を文字列として指定します。
を試してみてください。

SET @sql=@sql+' AND Emp_Id_Pk=' + CAST(@ID AS NVARCHAR(10))