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;