gpt4 book ai didi

sql - MS SQL 查询 - 如果不存在表

转载 作者:行者123 更新时间:2023-12-05 02:19:07 25 4
gpt4 key购买 nike

我做了一个游标(MSSQL):

CREATE TABLE #temp
(
DB VARCHAR(50),
Tab VARCHAR(50),
[COUNT] INT
)

DECLARE @db_name NVARCHAR (150)
DECLARE @tab1 NVARCHAR (150)

set @tab1 = 'dbo.test'

DECLARE c_db_names CURSOR FOR

SELECT name
FROM sys.databases
WHERE name like '%KNF%'

OPEN c_db_names

FETCH c_db_names INTO @db_name

WHILE @@Fetch_Status = 0
BEGIN
EXEC('
INSERT INTO #temp
SELECT ''' + @db_name + ''',''' + @tab1 + ''',COUNT(*) FROM ' + @db_name + '.' + @tab1 + '

')
FETCH c_db_names INTO @db_name
END

CLOSE c_db_names
DEALLOCATE c_db_names

SELECT * FROM #temp

DROP TABLE #temp

游标计算每个数据库表中的行数。如果没有这样的表,则会出错。

(1 row(s) affected)

(1 row(s) affected)
Msg 208, Level 16, State 1, Line 2
Invalid object name 'KNF_C.dbo.test'.

(2 row(s) affected)

很明显,因为KNF_C数据库没有这张表。我希望整个游标都能处理这样的异常。

预期结果:

DB      Tab         COUNT
KNF_A dbo.test 3
KNF_B dbo.test 7
KNF_C no table

我知道我应该使用语法,例如 if exist 但我不知道如何。

请帮忙解决这个问题

最佳答案

在 SQL Server 上,您可以使用 OBJECT_ID 检查对象是否存在:

IF OBJECT_ID('dbo.table_name') IS NOT NULL
DO SOMETHING;

或者使用INFORMATION_SCHEMA.TABLES而不是 sys.databases。

关于sql - MS SQL 查询 - 如果不存在表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43525781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com