0

order_id挿入しようとする注文に設定された自動インクリメント ID を格納するという変数を宣言しました。で構文エラーが発生しOUTPUTます。

私は多くの例を読みましたが、これが正しいコーディング方法です。すべてのコードはストアド プロシージャ内にあります。別のテーブルに挿入するために自動インクリメントされた ID が必要であることを除いて、注文の挿入と残りの手順は機能します。

CREATE DEFINER=`name`@`%` PROCEDURE `conduct_order`(
    IN username_par VARCHAR(50), 
    IN addr_par VARCHAR(100),
    IN zip_par VARCHAR(45))
BEGIN
    DECLARE user_addr VARCHAR(100);
    DECLARE user_zip VARCHAR(45);
    DECLARE user_country VARCHAR(100);
    DECLARE user_phone VARCHAR(45);
    DECLARE user_email VARCHAR(45);
    DECLARE this_date VARCHAR(45);
    DECLARE temp INT;


    SET user_id = (SELECT id FROM customers WHERE username= username_par);
    SET user_addr = addr_par;
    SET user_zip = zip_par;
    SET user_country = (SELECT country FROM customers WHERE username=username_par);
    SET user_phone = (SELECT phone FROM customers WHERE username=username_par);
    SET user_email = (SELECT email FROM customers WHERE username=username_par);
    SET this_date = (SELECT CURDATE());

    INSERT INTO orders(
                    customer_id, 
                    customer_addr,
                    customer_phone, 
                    customer_email, 
                    order_date, 
                    order_state, 
                    customer_postalcode, 
                    customer_country)
            OUTPUT order_id INTO temp
            VALUES( 
                    user_id,
                    user_addr,
                    user_phone,
                    user_email,
                    this_date,
                    'not sent',
                    user_zip,
                    user_country);

    INSERT INTO order_items(order_id, product_id, amount)
    VALUES(
        (SELECT id FROM orders 
        WHERE   customer_id=user_id 
        AND     order_date=this_date
        AND     customer_addr=user_addr
        AND     customer_postalcode=user_zip
        AND     customer_country=user_country),
        (SELECT product_id FROM carts WHERE customer_id=user_id),
        (SELECT amount FROM carts WHERE customer_id=user_id));

END

MySQLワークベンチは言う

構文エラー: 予期しない '出力' (識別子)

何が悪いのかわかりません。

編集:テーブル変数を使用して解決された同様の問題を伴うstackoverflowに関する別の質問を見つけましたが、テーブル変数を宣言できないようです。ワードベンチ 言う

TABLE は現時点では有効な入力ではありません。

これは、「DECLARE MyTableVar TABLE (IdentityColumn BIGINT);」を試したときです。

4

0 に答える 0