我使用以下方法创建了一个程序:
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相同的值。
任何帮助将不胜感激。
由于
答案 0 :(得分:0)
您可以手动构建临时表,然后调用该函数,您可以在其中将数据插入临时表.MYSQL似乎不支持返回表