2017-02-11 33 views
0

我試圖設置插入行的過程,並使用參數中的值更改其他表中的值。但是......錯誤,我和谷歌=無解...處理您的請求時有發生MySQL存儲過程WHERE

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 @% PROCEDURE creditCharge(IN _akceuzivateleid INT(9),IN _typ_transakce VARCHAR(20)CHARSET UTF8,IN _castka INT,IN _datum時間戳)NOT DETERMINISTIC修改SQL數據SQL SECURITY INVOKER INSERT INTO transakce(id_transakceakce_uzivatele_idtyp_transakcecastkadatum_sazky)VALUES (NULL,_akceuzivatele id,_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; 「 MySQL說:#1064 - 你的SQL語法有錯誤;查看與你的MySQL服務器版本相對應的手冊,在'SET kreditUzivatele:= SELECT kredit FROM uzivatele WHERE uzivatele.id_uzi' 4個

屏幕: Before After

回答

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); 
+0

MySQL表示:#1064 - 你在你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到在'DECLARE kreditUzivatele;在第6行將'kredit'轉換爲kreditUzivatele FROM'uzivatele'' –

+0

請確保在問題中發佈的代碼片段遵循以下格式 - > https://dev.mysql.com/doc/refman/5.7/en/創建-procedure.html。 此外,你可以嘗試移動'DECLARE'位,在BEGIN之後立即 –