我不知道我的 MYSQL 程序有什么问题

I don't know what's wrong with my MYSQL procedure

尝试在 MYSQL workbench 中创建过程,但我没有成功..

程序使用来自 ASP 程序的参数插入 table,插入活动 table,然后根据插入的 ID,插入另一个 table 和 returns 从最后一个 table 插入的 id。table.

我做错了什么?我正在习惯 SQL 服务器....

CREATE PROCEDURE Insert_Campaign_Indicator(
     IN Name VARCHAR(50),
     IN Email VARCHAR(50),
     IN Phone VARCHAR(50),
     IN Active INT,
     IN Type INT,
     IN UserId INT,
     IN CampaignId INT
)

BEGIN
    INSERT INTO Indicator(Name, Email, Phone, Link, Active, CleaningType, Type, UserId) 
                                VALUES (Name, Email, Phone, uuid(), Active, 2, Type, UserId);

        INSERT INTO CampaignIndicator (CampaignId, IndicatorId, Link, ResearchWasSent, ReadyToRefer, AcceptedRefer, Active, UserId)
            VALUES (CampaignId, LAST_INSERT_ID(), uuid(),0,0,0, 1, UserId);

        SELECT Link FROM CampaignIndicator WHERE Id = LAST_INSERT_ID();
END //

DELIMITER ;

从不 使用列名作为变量,MySQL 会感到困惑

代码没有分隔符,因为您必须添加 dbfddle 站点

CREATE TABLE Indicator(id int AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(50)
, Email VARCHAR(50), Phone VARCHAR(50), Link VARCHAR(36),Active Int, CleaningType int, Type int, UserId int)
CREATE TABLE CampaignIndicator (id int AUTO_INCREMENT PRIMARY KEY,CampaignId int
, IndicatorId int, Link VARCHAR(36), ResearchWasSent int, ReadyToRefer int, AcceptedRefer int
, Active int, UserId int)
CREATE PROCEDURE Insert_Campaign_Indicator(
     IN _Name VARCHAR(50),
     IN _Email VARCHAR(50),
     IN _Phone VARCHAR(50),
     IN _Active INT,
     IN _Type INT,
     IN _UserId INT,
     IN _CampaignId INT
)

BEGIN
    INSERT INTO Indicator(Name, Email, Phone, Link, Active, CleaningType, Type, UserId) 
                                VALUES (_Name, _Email, _Phone, uuid(), _Active, 2, _Type, _UserId);

        INSERT INTO CampaignIndicator (CampaignId, IndicatorId, Link, ResearchWasSent, ReadyToRefer, AcceptedRefer, Active, UserId)
            VALUES (_CampaignId, LAST_INSERT_ID(), uuid(),0,0,0, 1, _UserId);

        SELECT Link FROM CampaignIndicator WHERE Id = LAST_INSERT_ID();
END
CALL Insert_Campaign_Indicator('A','B','C',1,1,1,1)
| Link                                 |
| :----------------------------------- |
| 28aee8e1-d169-11eb-96e0-00163e64f9cc |

✓

db<>fiddle here