Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从TVF执行select语句作为变量_Sql_Sql Server_Tsql_Variables - Fatal编程技术网

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进行类似的查询。