sql - 如何更新数据库中所有表的特定列值

标签 sql sql-server sql-server-2008

create procedure change_ardivisionno
@CustomerNo nvarchar(7),@table_name varchar(40)

AS
Begin
SET NOCOUNT ON
Update @table_name
SET ARDivisionNo = '21'
where @CustomerNo = (select customerno from mas_abc.dbo.customerlist)
and @table_name = (select tablename from table_list)
END

我正在尝试将数据库中所有表中 customernoARDisivionNo(ARDivisionno 是列名称)值设置为 21是存储在客户列表表中的客户列表。

我正在尝试创建此过程,但我不断收到错误:

*Must declare the table variable "@table_name".*

最佳答案

类似这样的事情,除了我不明白您当前的 WHERE 子句应该如何限制对目标表中一组行的更新。现在看起来它会更新整个表;我怀疑缺少连接条件。

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'UPDATE t
  SET ARDivisionNo = ''21''
  FROM dbo.' + QUOTENAME(tablename) + ' AS t
  INNER JOIN mas_abc.dbo.customerlist AS c
  ON c.customerno = @CustomerNo;';

PRINT @sql;
--EXEC sp_executesql @sql, N'@Cust NVARCHAR(7)', @CustomerNo;

关于sql - 如何更新数据库中所有表的特定列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15532868/

相关文章:

sql - 将多个重复字符替换为一个

sql-server - 如何使用 JDBC 将表值参数(类数组参数)传递给 Microsoft SQL Server 2008 R2 中的存储过程?

sql-server-2008 - 在 sql server 2008 中以 float 声明 N

c# - 如何使用 C# 通过服务器站点的 TCP/IP 连接到 SQL 服务器?

python - 带随机化的加权数据库查询

sql - 使用 SQL 中的过程从存储表行中删除空间

sql-server - 如何使用 SPN 通过 SSMS 连接

c# - C# 日期时间和 SQL 日期时间之间的相等性比较失败

.net - 帮助理解 Web 服务和 REST

mysql - Group by select 基于 OR 条件