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
我正在尝试将数据库中所有表中 customerno
的 ARDisivionNo
(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/