MySQL存储过程WHERE

时间:2017-02-11 00:30:28

标签: mysql

我试图设置插入行的过程并使用参数中的值来更改其他表中的值。但是......错误,我和谷歌=没有解决方案......

INSERT INTO transakce (`id_transakce`, `akce_uzivatele_id`,            `typ_transakce`, `castka`, `datum_sazky`) 
VALUES (NULL, _akceuzivateleid ,_typ_transakce,_castka, _datum);

SET kreditUzivatele := SELECT ` kredit`  FROM `uzivatele` WHERE  uzivatele.id_uzivatele = _akceuzivateleid ;

SET kreditUzivatele := kreditUzivatele + _castka;
UPDATE `uzivatele` SET `kredit` := kreditUzivatele WHERE uzivatele.id_uzivatele =  _akceuzivateleid ;
  

处理您的请求时发生了一个或多个错误:   以下查询失败:" CREATE DEFINER = marek @ %程序creditCharge(IN _akceuzivateleid INT(9),IN _typ_transakce VARCHAR( 20)CHARSET utf8,IN _castka INT,IN _datum TIMESTAMP)不确定性修改SQL数据SQL安全性入侵者插入转换(id_transakceakce_uzivatele_idtyp_transakcecastkadatum_sazky)VALUES(NULL,_akceuzivateleid,_typ_transakce,_castka,_datum); SET kreditUzivatele:= SELECT kredit FROM uzivatele WHERE uzivatele.id_uzivatele = _akceuzivateleid; SET kreditUzivatele:= kreditUzivatele + _castka;更新uzivatele SET kredit:= kreditUzivatele WHERE uzivatele.id_uzivatele = _akceuzivateleid; "   MySQL说:#1064 - 你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在#k; SET kreditUzivatele附近使用正确的语法:= SELECT kredit FROM uzivatele WHERE uzivatele.id_uzi'在第4行

屏幕: Before After

1 个答案:

答案 0 :(得分:0)

您可以尝试更改以下声明:

SET kreditUzivatele := SELECT ` kredit`  FROM `uzivatele` WHERE  uzivatele.id_uzivatele = _akceuzivateleid ;

到此:

DECLARE kreditUzivatele;
SELECT ` kredit` into kreditUzivatele FROM `uzivatele` WHERE  uzivatele.id_uzivatele = _akceuzivateleid ;

或者这个:

DECLARE kreditUzivatele;
SET kreditUzivatele = (SELECT ` kredit`  FROM `uzivatele` WHERE  uzivatele.id_uzivatele = _akceuzivateleid);