Sql 从TVF执行select语句作为变量
我必须从变量的表值函数中获取结果列表。我做过这样的事情:Sql 从TVF执行select语句作为变量,sql,sql-server,tsql,variables,Sql,Sql Server,Tsql,Variables,我必须从变量的表值函数中获取结果列表。我做过这样的事情: DECLARE @Date char(8) = '20200508' DECLARE @Type varchar(100) = 'Inbound' DECLARE @Offset INT = 3600 DECLARE @EmployeeID INT = null DECLARE @TypeFunc as varchar(max) SET @TypeFunc= N'select EmpID, Callcount from dbo.fn_
DECLARE @Date char(8) = '20200508'
DECLARE @Type varchar(100) = 'Inbound'
DECLARE @Offset INT = 3600
DECLARE @EmployeeID INT = null
DECLARE @TypeFunc as varchar(max)
SET @TypeFunc= N'select EmpID, Callcount from dbo.fn_' + @Type + '('''+ @Date +''','+ CAST(@Offset as Varchar(100))+','+ CAST(@EmployeeID as varchar(100))+')';
EXEC (@TypeFunc)
我希望看到一个结果列表,就好像我在做一个普通的select查询一样,但是,它只是在结果网格中返回“Commands completed successfully.”,这似乎并不正确
它应该运行的查询应该如下所示
从dbo.fn_入站'20200508',3600',null中选择EmpID,Callcount
我在这里遗漏了什么?我在您的查询中发现了两个错误: 一,。使用CONCAT而不是+因为如果任何连接字符串为null,它会使整个连接为null。对于EmpID为null的情况,它会使用+ 二,。ISNULLCAST@EmployeeID与varchar100一样,“NULL”使用ISNULL fn作为NULL传递函数中的该参数
SET @TypeFunc= CONCAT(N'select EmpID, Callcount from dbo.fn_' , @Type , '(''', @Date
,''',', CAST(@Offset as Varchar(100)),',',ISNULL(CAST(@EmployeeID as
varchar(100)),'NULL'),')');
谢谢,我现在也使用Concat进行类似的查询。