MYSQL创建函数 - 获取:不允许从函数

时间:2017-03-16 08:42:52

标签: mysql function procedure

我使用以下方法创建了一个程序:

DELIMITER //
CREATE PROCEDURE marketingdb_eia.procGetEstateConsumerFromVehicleReg(IN clientId int, IN vehicleReg varchar(10))
SQL SECURITY INVOKER
BEGIN

SELECT  *
FROM (SELECT *, CONCAT(c1.vehicle_reg_1, c1.vehicle_reg_2, c1.vehicle_reg_3, c1.vehicle_reg_4) AS "AllVehicleReg"
    FROM estate_consumer AS c1
      INNER JOIN consumer c2
        ON c1.consumer_id = c2.id
    WHERE c2.client_id = clientId) AS a
WHERE a.AllVehicleReg LIKE vehicleReg;

END //

这完美无缺,所以我现在正在尝试为上面创建一个函数,所以我试图这样做:

DELIMITER //
CREATE FUNCTION marketingdb_eia.procGetEstateConsumerFromVehicleReg(clientId int, vehicleReg varchar(10))
RETURNS CHAR
BEGIN

SELECT  *
FROM (SELECT *, CONCAT(c1.vehicle_reg_1, c1.vehicle_reg_2, c1.vehicle_reg_3, c1.vehicle_reg_4) AS "AllVehicleReg"
    FROM estate_consumer AS c1
      INNER JOIN consumer c2
        ON c1.consumer_id = c2.id
    WHERE c2.client_id = clientId) AS a
WHERE a.AllVehicleReg LIKE vehicleReg;

END //

但是收到以下错误:“不允许从函数返回结果集”。

在做了一些研究后,看起来你不能返回包含列的集合。我必须在SELECT查询后使用一些INTO功能,但不知道在哪里做什么以及要更改哪些值以返回与我的PROCEDURE相同的值。

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

您可以手动构建临时表,然后调用该函数,您可以在其中将数据插入临时表.MYSQL似乎不支持返回表