相关疑难解决方法(0)

从名称作为变量传递的表中进行选择

我正在尝试编写一个简单的存储过程,它接受三个参数'数据库名称一个','数据库名称二'和'表名称'.然后,sql将为每个数据库中的已定义表执行行计数并存储它.

零碎的工作我遇到了第一个你不能做的问题

select * from @tablename
Run Code Online (Sandbox Code Playgroud)

我知道你可以在exec命令中使用动态sql,但这并不理想,因为我无法返回值.

以下示例看起来应该可以工作但不会.

declare @tablename as nvarchar(500)
declare @sqlstring as nvarchar(500)
declare @parmdefinition as nvarchar(500)
declare @numrows as bigint

set @tablename = N'dummy_customer'

set @parmdefinition = N'@tablenameIN nvarchar(500), @numrowsOUT as bigint OUTPUT'

select @sqlstring = 'select @numrowsOUT = count(*) from @tablenameIN'

select @sqlstring

exec sp_executesql @sqlstring, @parmdefinition, @tablenameIN = @tablename, @numrowsOUT = @numrows OUTPUT

select @numrows
Run Code Online (Sandbox Code Playgroud)

给出的错误信息是

Msg 1087, Level 16, State 1, Line 1
Must declare the table variable "@tablenameIN".
Run Code Online (Sandbox Code Playgroud)

目前使用的是SQL Server …

sql t-sql sql-server-2008

0
推荐指数
1
解决办法
2209
查看次数

标签 统计

sql ×1

sql-server-2008 ×1

t-sql ×1