私はすべての構文がOKですが、私はエラーが表示されるようです。トリガーの作成:ERROR 1064(42000):SQL構文にエラーがあります。
注:mysql
コンソールにこのコードを貼り付けることで、トリガーを作成しています。これが重要かどうかはわかりません。以下は
DELIMITER $$
CREATE TRIGGER after_nse_fo_insert AFTER INSERT
ON NSE_FO
FOR EACH ROW
BEGIN
DECLARE settle_orders_data VARCHAR(1000) DEFAULT '';
DECLARE delimiter_pos INT DEFAULT 0;
DECLARE start_pos INT DEFAULT 0;
DECLARE fill_id VARCHAR(50) DEFAULT '';
DECLARE if_settled VARCHAR(50) DEFAULT '';
DECLARE units_settled INT DEFAULT 0;
DECLARE temp_diff INT DEFAULT 0;
CALL settle_trade_orders(NEW.FillId, NEW.SymbolName, NEW.TransactionType, NEW.AccountName, NEW.TradeDateTime, CAST(NEW.FillSize AS UNSIGNED), NEW.FillPrice, settle_orders_data);
settling_loop: LOOP
SET start_pos = delimiter_pos + 1;
SET delimiter_pos = LOCATE(',', settle_orders_data, start_pos);
IF delimiter_pos = 0 THEN
LEAVE settling_loop;
END IF;
SET temp_diff = delimiter_pos - start_pos;
SET fill_id = SUBSTRING(settle_orders_data, start_pos, temp_diff);
SET start_pos = delimiter_pos + 1;
SET delimiter_pos = LOCATE(',', settle_orders_data, start_pos);
SET temp_diff = delimiter_pos - start_pos;
SET if_settled = SUBSTRING(settle_orders_data, start_pos, temp_diff);
SET start_pos = delimiter_pos + 1;
SET delimiter_pos = LOCATE(',', settle_orders_data, start_pos);
SET temp_diff = delimiter_pos - start_pos;
SET settled_count = SUBSTRING(settle_orders_data, start_pos, temp_diff);
-- settle in NSE_FO table
-- UPDATE NSE_FO
-- SET Settled=if_settled, settled_units=settled_count
-- WHERE FillId=fill_id;
END LOOP settling_loop;
END $$
DELIMITER ;
私は
ERROR 1064(42000)を参照のエラーです:あなたは、あなたのSQL構文でエラーが発生しているが、正しい の構文が 'IFの近くで使用するようにMySQLサーバのバージョンに対応する マニュアルを確認してください。
SET temp_diff = delimiter_pos - start_pos; fill_id SETは= SUBSTRING(ライン19
でsettle_o」私はそれらの線の周りの構文の問題が何であるかわからない
更新:?。完全IF
文を削除は、別のエラーがスローされます
ERROR 1064(42000):SQL構文にエラーがあります。 構文が近くに使用されるようにMySQLサーバのバージョンに対応する のマニュアルをチェックしてください '(settle_orde rs_data、start_pos、temp_diff); SET start_pos = delimiter_pos + 1; 17行目でIFを完全に削除しました。
。全く同じ結果。 – bobdiya