我不知道我的 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
尝试在 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