首页 > 解决方案 > 错误代码:1415。不允许从触发器返回结果集

问题描述

我收到此错误

错误代码:1415。不允许从触发器返回结果集

当我尝试在下面执行此代码时:

DELIMITER //
DROP TRIGGER IF EXISTS after_payment_insert//
CREATE TRIGGER after_payment_insert
AFTER INSERT
ON Payment FOR EACH ROW
BEGIN
    SET @p = (Select ProductCode from Product Where ProductName = New.ItemName Limit 1);
    Call insertInvoice(New.Email,New.InvoiceNumber, @p, New.ItemName, '1', New.Total, New.Status);
END//
DELIMITER ;

也试过这个:

DECLARE var_productcode varchar(10);
Select ProductCode into var_productcode from Product Where ProductName = New.ItemName Limit 1;
Call insertInvoice(New.Email,New.InvoiceNumber, var_productcode, New.ItemName, '1', New.Total, New.Status);

上面的两个代码都导致错误代码 1415。

insertInvoice 只是一个简单的存储过程,用于从发票表中插入数据。

下面是 InsertInvoice 过程

DELIMITER //
DROP PROCEDURE IF EXISTS insertInvoice//
CREATE PROCEDURE insertInvoice(
    IN insert_Email VARCHAR(255), 
    IN insert_InvoiceNumber VARCHAR(10), 
    IN insert_ProductCode VARCHAR(50), 
    IN insert_ItemName VARCHAR(10), 
    IN insert_Quantity VARCHAR(10), 
    IN insert_Price VARCHAR(10), 
    IN insert_Status VARCHAR(50))
    
BEGIN
INSERT INTO Invoice(Email, InvoiceNumber, ProductCode, ItemName, Quantity, Price, Status)
VALUES(insert_Email, insert_InvoiceNumber,insert_ProductCode, insert_ItemName, insert_Quantity, insert_Price, insert_Status);
END
//DELIMITER ;

但是当我使用正常的 Insert Into (....) Values(...) 时,它就可以工作了。

标签: mysql

解决方案


推荐阅读