【发布时间】:2020-10-03 16:06:35
【问题描述】:
我的功能是:
Create Function [dbo].[FindMaxRadif](@field nvarchar(15), @tbl nvarchar(15))
returns int
as
begin
declare @query int
set @query = 'select max('+ @field+') from '+ @tbl
return (@query)
end
当使用此命令执行此功能时:
select dbo.FindMaxRadif('IdVehicle','TblVehicle')
我收到此错误:
转换 nvarchar 值 'select 时转换失败 max(IdVehicle) 从 TblVehicle' 到数据类型 int。
如何解决?
【问题讨论】:
-
您尝试使用动态 SQL,但您不能在 UDF 中使用动态 SQL(您可以在存储过程中使用)
-
@dnoeth - 再看一遍...... OP 没有尝试在函数中执行动态 SQL。他只是试图将部分连接成一个字符串,可以在函数之外用作动态 SQL。
-
@JeffModen 好吧,OP 尝试将字符串分配给 INT 结果,这就是它失败并出现类型转换错误的原因。
-
@dnoeth - 是的......同意。这是唯一的问题......不是你说的动态 SQL。
-
@JeffModen 当然是动态SQL,他尝试在查询字符串中分配计数的result。
标签: sql-server tsql user-defined-functions