【发布时间】:2015-08-04 10:12:34
【问题描述】:
我有一个目标表 dbo.val,其中包含三列:table_schema、table_name 和 row_count,其中架构和名称已填充,并且特定数据库的相应行数设置为零。
我需要每个表名的行数,但不能使用系统表来计算行数,因为它们有时可能会提供不准确的数据。
我使用游标从 INFORMATION_SCHEMA.TABLES 获取表和架构名称以填充到 @tb_schema 和 @tb_table 变量中,并使用第三个变量 @c_name 来合并两者
set @c_name = @tb_schema + '.' + @tb_name;
我需要一个更新语句从@c_name 获取动态计数并填充dbo.val 的row_count 列,稍后可以将其放入循环中
这是我尝试过的,但没有奏效:
update dbo.val set row_count = Exec ('select COUNT(*) from ' + @full_name)
where table_schema = @tb_schema and table_name =@tb_name ;
我也尝试了以下方法,但效果不佳
declare @catch numeric (20)
select @catch = Exec ('select COUNT(*) from ' + @full_name) ;
update dbo.validate set cnt = @catch
where tb_schema = @tb_schema and tb_name =@tb_name ;
谁能帮帮我,如何更新我的目标表的行数?
【问题讨论】:
标签: sql-server sql-server-2008 sql-update dynamic-sql