将varchar转换为INT时转换失败

时间:2017-05-02 09:06:55

标签: sql-server

我知道有很多问题要问这样,但是我已经尝试了几乎所有的解决方案,但仍然无法让这一段代码工作:(这就是我正在做的事情 - 我是试图找到表中的行数,以便我可以将其用作循环和删除行的计数器。

@rc是INT, @tbname是varchar(500) 而@id也是INT。

这是我的疑问:

set @rc='select count(*) from dbo.[' + @tbname + '] where id = ' + @id 

我也试过这些:

set @rc='select cast(count(*) as varchar) from dbo.[' + @tbname + '] where id = ' + @id

set @rc='select count(*) from dbo.[' + @tbname + '] where id = ' + cast(@id as varchar)

还有一些在这里和那里放置演员阵容的排列。我还尝试将@rc的声明更改为varchar,仍然会出现同样的错误。

1 个答案:

答案 0 :(得分:1)

在这种情况下使用sp_executesql,

    DECLARE @retval int   
    DECLARE @sSQL nvarchar(500);
    DECLARE @ParmDefinition nvarchar(500);

   DECLARE @rc          INT
            ,@str       NVARCHAR(MAX)
            ,@tbname    NVARCHAR(500) = 'Table1'
            ,@id        int

    set @str='select @rcOut = count(*) from dbo.[' + @tbname + '] where id = ' + CAST(@id as NVARCHAR)


    EXEC sp_executesql @str, N'@rcOut int OUTPUT',@rcOut = @rc OUTPUT;

    SELECT @rc;