我无法找出将查询输出分配给我稍后可以在INSERT子句中使用的变量的正确方法。
我得到的错误是
错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在' SET @lennuid =附近使用正确的语法(从lend中选择lend_id,其中sihtpunkt = in_kuhu和kuupaev = in _' at the line 8
我已经尝试查看SQL中每个变量指南,但没有一个可以帮我解决这个问题。
我使用以下代码:
CREATE PROCEDURE proov(
in_kuhu varchar(50), in_nimi1 varchar(50), in_nimi2 varchar(50), in_adre varchar(50), in_telo varchar(20), in_email varchar(100), in_date date)
BEGIN
DECLARE viga INTEGER DEFAULT 0 ;
DECLARE lennuid INT;
START TRANSACTION;
IF exists (
SET @lennuid = (select lend_id from lend where sihtpunkt=in_kuhu AND kuupaev=in_date)) THEN
INSERT INTO broneering
(lend_id, bron_aeg, eesnim, perenimi, aadress, telefon, email)
VALUES
(lennuid, NOW(), in_nimi1, in_nimi2, in_adre, in_telo, in_email);
ELSE
set viga=1;
SELECT 'Muudatus ebaonnestus ',viga;
END IF;
IF viga=0 then
COMMIT;
select 'korras';
ELSE
select 'tagasi';
ROLLBACK;
END IF;
答案 0 :(得分:1)
THEN
导致问题。
IF exists (
SET @lennuid = (select lend_id from lend where sihtpunkt=in_kuhu AND kuupaev=in_date))
BEGIN -- Instead of THEN use BEGIN , END
INSERT INTO broneering
(lend_id, bron_aeg, eesnim, perenimi, aadress, telefon, email)
VALUES
(lennuid, NOW(), in_nimi1, in_nimi2, in_adre, in_telo, in_email);
END
ELSE
BEGIN
set viga=1;
SELECT 'Muudatus ebaonnestus ',viga;
END
END IF;
答案 1 :(得分:0)
您可能想要使用$image = \ORM::for_table('shop_product_images')->create();
$image->productId = $productId;
$image->path = '/img/shop/products/'.$name;
$image->save();
:
SELECT INTO
可替换地:
select lend_id into @lennuid
from lend
where sihtpunkt=in_kuhu AND kuupaev=in_date;
无论哪种方式都一样,那么你可以随意使用那个变量......
但是,在您的特定示例中,问题实际上是您的select @lennuid := lend_id
from lend
where sihtpunkt=in_kuhu AND kuupaev=in_date;
与exists
一起使用的方式。要解决此问题,请使用以下命令:
set
这里的问题是,您是在IF exists (select lend_id from lend where sihtpunkt=in_kuhu AND kuupaev=in_date) THEN ...
支票内设置了SET
的变量。
或者您可以先将EXISTS
选为数字变量:
COUNT