Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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查询的计数结果转换为INT_Sql_Sql Server - Fatal编程技术网

将动态sql查询的计数结果转换为INT

将动态sql查询的计数结果转换为INT,sql,sql-server,Sql,Sql Server,我试图在查询返回的值表名称中搜索,以检查是否有记录,并且该记录中的某些值为空。如果是,那么我想将表的名称插入到临时表中。我得到一个错误: Conversion failed when converting the varchar value 'count(*) FROM step_inusd_20130618 WHERE jobDateClosed IS NULL' to data type int. 以下是查询: DECLARE @table_name VARCHAR(150)

我试图在查询返回的值表名称中搜索,以检查是否有记录,并且该记录中的某些值为空。如果是,那么我想将表的名称插入到临时表中。我得到一个错误:

Conversion failed when converting the varchar value 'count(*) 
FROM  step_inusd_20130618 WHERE jobDateClosed IS NULL' to data type int.
以下是查询:

  DECLARE @table_name VARCHAR(150)
  DECLARE @sql VARCHAR(1000)
  DECLARE @test int

  SELECT @table_name =  tableName FROM  #temp WHERE id = @count

   SET @sql = 'SELECT * FROM  ' + @table_name + ' WHERE jobDateClosed IS NULL'
--ERROR is below:
select @test =   'count(*) FROM  ' + @table_name + ' WHERE jobDateClosed IS NULL'
   --PRINT @sql
  -- EXEC(@sql)
   IF @test > 0 
   BEGIN 
    INSERT INTO #temp2 (tablename) VALUES ( @table_name);
   END
  SET @count = @count + 1
您知道如何将计数结果转换为整数吗?

检查您可以在哪里定义输出参数

DECLARE @table_name VARCHAR(150)
DECLARE @sql VARCHAR(1000)
DECLARE @test int

SELECT @table_name =  tableName FROM  #temp WHERE id = @count

DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);

SET @SQLString = N'SELECT @test = count(*) FROM  ' + @table_name + ' WHERE jobDateClosed IS NULL'
SET @ParmDefinition = N'@test int OUTPUT';

EXECUTE sp_executesql @SQLString, @ParmDefinition, @test=@test OUTPUT;

IF @test > 0 
    BEGIN 
        INSERT INTO #temp2 (tablename) VALUES ( @table_name);
    END
SET @count = @count + 1

不应该设置而不是选择

例如,改变:

select @test =   'count(*) FROM  ' + @table_name + ' WHERE jobDateClosed IS NULL'
用于:


正如我所看到的,您的问题是,$test变量是INT,您试图为它分配文本值'count…'

使用类似以下的方法:
从uid=1的mytable中,将somevalue选择到myvar中

我删掉了不需要的东西来展示如何做到这一点,所以这里是:

DECLARE @table_name VARCHAR(150)
DECLARE @CountStatement NVARCHAR(1000)
DECLARE @test int

SELECT @table_name =  tableName FROM  #temp WHERE id = @count

SET @CountStatement = 'select @test = count(*) FROM  ' + @table_name + ' WHERE jobDateClosed IS NULL'
EXECUTE sp_executesql @CountStatement, N'@test INT OUTPUT', @test OUTPUT;
SELECT @test
DECLARE @table_name VARCHAR(150)
DECLARE @CountStatement NVARCHAR(1000)
DECLARE @test int

SELECT @table_name =  tableName FROM  #temp WHERE id = @count

SET @CountStatement = 'select @test = count(*) FROM  ' + @table_name + ' WHERE jobDateClosed IS NULL'
EXECUTE sp_executesql @CountStatement, N'@test INT OUTPUT', @test OUTPUT;
SELECT @test