MySQL 带有查询字符串的过程
MySQL procedure with query string
我是在 mysql 中使用查询字符串的新手,我尝试编写此过程以在特定条件下删除表。我真的不知道自己做错了什么,需要帮助才能使程序正常运行,或者需要有人为我指明正确的方向。谢谢
BEGIN
DECLARE String scheduler = 'select status from mysql.scheduler where id=0' ;
DECLARE String auftragpos = 'SELECT count("SchemaName") FROM "SYS.Tables" where "SchemaName" = dwh and "Name" = lexware_fk_auftragpos';
DECLARE String auftrag = 'SELECT count("SchemaName") FROM "SYS.Tables" where "SchemaName" = dwh and "Name" = lexware_fk_auftrag';
IF(auftragpos > 1)
BEGIN
drop table "dwh.lexware_fk_auftragpos";
END
IF(auftrag > 1)
BEGIN
drop table "dwh.lexware_fk_auftrag";
END
END
声明变量的语法是
DECLARE variablename datatype;
所以应该是
DECLARE auftragpos INT;
然后你需要将查询的结果赋值给变量。您可以通过将 SELECT
查询放在括号中来实现。
您也不应该引用 table 个名称,您需要引用您用于架构的文字字符串和您要搜索的 table 个名称。
SET auftragpos = (
SELECT count(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dwh' AND TABLE_NAME = 'lexware_fk_auftragpos');
但确实没有必要这样做。如果你想防止 DROP TABLE
的错误,只需添加 IF EXISTS
选项。
DROP TABLE IF EXISTS dwh.lexware_fk_auftragpos;
我是在 mysql 中使用查询字符串的新手,我尝试编写此过程以在特定条件下删除表。我真的不知道自己做错了什么,需要帮助才能使程序正常运行,或者需要有人为我指明正确的方向。谢谢
BEGIN
DECLARE String scheduler = 'select status from mysql.scheduler where id=0' ;
DECLARE String auftragpos = 'SELECT count("SchemaName") FROM "SYS.Tables" where "SchemaName" = dwh and "Name" = lexware_fk_auftragpos';
DECLARE String auftrag = 'SELECT count("SchemaName") FROM "SYS.Tables" where "SchemaName" = dwh and "Name" = lexware_fk_auftrag';
IF(auftragpos > 1)
BEGIN
drop table "dwh.lexware_fk_auftragpos";
END
IF(auftrag > 1)
BEGIN
drop table "dwh.lexware_fk_auftrag";
END
END
声明变量的语法是
DECLARE variablename datatype;
所以应该是
DECLARE auftragpos INT;
然后你需要将查询的结果赋值给变量。您可以通过将 SELECT
查询放在括号中来实现。
您也不应该引用 table 个名称,您需要引用您用于架构的文字字符串和您要搜索的 table 个名称。
SET auftragpos = (
SELECT count(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dwh' AND TABLE_NAME = 'lexware_fk_auftragpos');
但确实没有必要这样做。如果你想防止 DROP TABLE
的错误,只需添加 IF EXISTS
选项。
DROP TABLE IF EXISTS dwh.lexware_fk_auftragpos;