gpt4 book ai didi

mysql - 检查数据库中是否存在表 - 存储过程 - MySQL

转载 作者:行者123 更新时间:2023-11-29 21:58:47 25 4
gpt4 key购买 nike

我希望用户输入他们想要检查的任何数据库以及他们想要检查的任何表。例如,调用如下所示:

call tableCheck('MyDatabase', 'table1 table20 table3')

因此该过程将检查这些表(以空格分隔)。我的代码在下面,但我在检查其他表时遇到问题,它读取第一个表,但不读取第二个或第三个表。所以我的代码没有循环或没有读取下一个单词。

PROCEDURE `tableCheck` (db VARCHAR(256), db_tables VARCHAR(256))
BEGIN
DECLARE tbl, tbls VARCHAR(256);
DECLARE c INT DEFAULT 0;

SET tbls = db_tables;

WHILE c = 0 DO

#split word
SET tbl = SUBSTRING_INDEX(tbls," ",1);
#go to next string
SET tbls = SUBSTR(tbls,LENGTH(tbl)+1);

#check every table
SELECT table_name AS 'Table Name'
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema=db AND table_name=tbl;

IF tbls = 0 THEN
SET c = 1;
END IF;
END WHILE;
END

最佳答案

我今天已经多次给出这个链接...所以也许它也适合你。 Convert a delimited string to a list of values

使用该链接中的 dbo.fnArray 函数,您应该能够像这样加入 INFORMATION_SCHEMA.TABLES:

create procedure dbo.spCheckTable @db varchar(256), @tbls varchar(8000)
as
begin
select *
from INFORMATION_SCHEMA.TABLES i
inner join dbo.fnArray(@tbls, ' ') t on i.TABLE_NAME = t.arrValue
where i.TABLE_CATALOG = @db
end

现在它是一个存储过程

关于mysql - 检查数据库中是否存在表 - 存储过程 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874474/

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