一个表table_61有5列,分别是shujuku:数据库,tablename:表名,note:标签,id:序号。另一个表table_sum也有这5列。table_61的表都属于同一个服务器,但可能存在不同的数据库内。 创建一个循环,判断table_61表内的表是否存在,存在则跳过,不存在则更新另一个表table_sum的note为'表不存在',两个表用shujuku和tablename关联,要求能循环到所有的表。代码需要在SqlServer内运行
时间: 2024-04-16 22:26:28 浏览: 51
以下是在 SQL Server 中使用循环进行表的检查和更新的示例代码:
```sql
DECLARE @shujuku VARCHAR(100)
DECLARE @tablename VARCHAR(100)
DECLARE @note VARCHAR(100)
DECLARE @id INT
DECLARE @count INT
SET @count = 1
WHILE @count <= (SELECT COUNT(*) FROM table_61)
BEGIN
SELECT @shujuku = shujuku, @tablename = tablename, @note = note, @id = id
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNum, shujuku, tablename, note, id
FROM table_61
) AS t
WHERE RowNum = @count
IF NOT EXISTS (
SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = @shujuku
AND TABLE_NAME = @tablename
)
BEGIN
UPDATE table_sum
SET note = '表不存在'
WHERE shujuku = @shujuku
AND tablename = @tablename
END
SET @count = @count + 1
END
```
上述代码会逐行遍历 `table_61` 表中的记录,并通过 `INFORMATION_SCHEMA.TABLES` 检查表是否存在。如果表不存在,则会更新 `table_sum` 表中对应记录的 `note` 字段为 `'表不存在'`。
请注意,上述代码仅提供了一个示例,实际使用时需要根据具体情况进行适当的修改。
阅读全文