我创建了下面列出的过程:
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)
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法执行它:
**execute getdata 3,'','';**
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
将nvarchar值'select EmpName,Address,Salary从Emp_Tb转换为1 = 1 AND Emp_Id_Pk ='转换为数据类型int时转换失败
请帮忙.
Avi*_*ner 51
您正在尝试连接字符串和整数.
你需要强制转换 @ID为字符串.
尝试:
SET @sql=@sql+' AND Emp_Id_Pk=' + CAST(@ID AS NVARCHAR(10))
Run Code Online (Sandbox Code Playgroud)
小智 7
尝试使用
CONVERT(nvarchar(10),@ID)
Run Code Online (Sandbox Code Playgroud)
这类似于 cast 但更便宜(就消耗的时间而言)