2016-11-25 11 views
1

私たちのサイトからの注文を処理するストアドプロシージャを作成したいと思います。問題は、私がスクリプトを実行すると、MySQLの構文エラーがあることです。私はMySQLストアドプロシージャの新機能です。誰かが私のコードを見ることができますか?ストアドプロシージャの作成によるMySQLエラー

USE postbrood; 
DELIMITER // 
CREATE PROCEDURE MaakBestelling(IN KlantIDParam INT, IN ProductIDArray VARCHAR(255), IN AantalArray VARCHAR(255)) 

BEGIN 
DECLARE BestelID INT DEFAULT 0; 
DECLARE ArrayLenght INT DEFAULT 0; 
DECLARE Counter INT DEFAULT 0; 



SET ArrayLenght = LENGTH(ProductIDArray) - LENGTH(REPLACE(ProductIDArray, ',', '')) + 1; 


INSERT INTO bestelling(klantID) VALUES (KlantIDParam); 
SET BestelID = LAST_INSERT_ID(); 

WHILE Counter < ArrayLenght DO 
INSERT INTO bestelregel VALUES (SUBSTRING_INDEX(ProductIDArray,',',Counter),BestelID,SUBSTRING_INDEX(AantalArray,',',Counter)); 
SET Counter = Counter + 1; 
END WHILE; 
END// 
DELIMITER ; 

ありがとうございます!

+0

「END」には、前に定義した区切り文字がありません。これは、 'END //'だけでなく 'END'でなければなりません。 –

+0

**次のエラー**:09:43:21 \t作成手順MaakBestelling(ProductIDArray VARCHAR(255)、IN AantalArray VARCHAR(255)内のKlantIDParam INTでIN) DECLARE BestelID INT DEFAULT 0 \tエラーコード:1064. SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして正しい構文を確認してください。近くの ''行4で\t 0.000秒 –

答えて

1

はくぎ付け! :)

USE postbrood; 
DELIMITER // 
CREATE PROCEDURE MaakBestelling(IN KlantIDParam INT, IN ProductIDArray VARCHAR(255), IN AantalArray VARCHAR(255)) 

BEGIN 
DECLARE BestelID INT DEFAULT 0; 
DECLARE ArrayLenght INT DEFAULT 0; 
DECLARE Counter INT DEFAULT 0; 



SET ArrayLenght = LENGTH(ProductIDArray) - LENGTH(REPLACE(ProductIDArray, ',', '')) + 1; 


INSERT INTO bestelling(klantID) VALUES (KlantIDParam); 
SET BestelID = LAST_INSERT_ID(); 

WHILE Counter < ArrayLenght DO 
INSERT INTO bestelregel VALUES (SUBSTRING_INDEX(ProductIDArray,',',Counter),BestelID,SUBSTRING_INDEX(AantalArray,',',Counter),2.50); 
SET Counter = Counter + 1; 
END WHILE; 
END// 
DELIMITER ; 
0

私はあなたがアスキー実体番号でコンマを交換してみなければならないカンマが

SET ArrayLenght = LENGTH(ProductIDArray) - LENGTH(REPLACE(ProductIDArray, ',', '')) + 1; 

で認識されていないと思う:&#44;

+0

行1の構文エラーです。構文エラーです。 –

関連する問題