-1
DELIMITER $$

CREATE

    PROCEDURE `cheque_alert`.`SavePoData`(IN poNo VARCHAR(25),IN releaseOrderDate DATE,IN expiryDate DATE,IN enteredDateTime DATETIME,IN enteredBy VARCHAR(8) ,
    IN poItemCode VARCHAR(25),IN poItemsId CHAR(1),IN poItemDescription VARCHAR(75),IN quantity DOUBLE,IN amount DOUBLE
    )

    BEGIN
        SELECT CASE WHEN ((SELECT 1 FROM `cheque_alert`.`po_main` WHERE po_no=poNo)>0)
        THEN        
        INSERT INTO `cheque_alert`.`po_items_details`
            (`pomainid_id`,
             `po_item_code`,
             `po_items_id`,
             `po_item_description`,
             `quantity`,
             `amount`)
        VALUES ((SELECT id FROM `cheque_alert`.`po_main` WHERE po_no =poNo),
            poItemCode,poItemsId,poItemDescription,quantity,amount) 

    ELSE        
        INSERT INTO `cheque_alert`.`po_main`
            (`po_no`,
             `release_order_date`,
             `expiry_date`,
             `entered_date_time`,
             `entered_by`)
        VALUES (poNo,releaseOrderDate,expiryDate,enteredDateTime,(SELECT ID FROM cheque_alert.user_login WHERE USER_ID=enteredBy));

        INSERT INTO `cheque_alert`.`po_items_details`
            (`pomainid_id`,
             `po_item_code`,
             `po_items_id`,
             `po_item_description`,
             `quantity`,
             `amount`)
        VALUES ((SELECT LAST_INSERT_ID(),
            poItemCode,
            poItemsId,
            poItemDescription,
            quantity,
            amount);

    END;
    END$$

DELIMITER ;

エラーが発生します:

エラーコード: 1064

SQL 構文にエラーがあります。'INTO の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してくださいcheque_alertpo_items_details ( pomainid_id, 14 行目の `po_item_cod'

私が犯した間違いを教えてください。

4

1 に答える 1

0

IF-ELSE 構造は次のようになります。

IF(some query to check something) THEN
BEGIN
    insert something
END
ELSE
BEGIN
    insert something
    insert something else
END

一方、CASE は、クエリ全体ではなく、一部の値の定義でのみ機能します。例えば:

SELECT CASE name WHEN 'hamburger' THEN 'unhealthy' ELSE 'healthy' END
FROM food
于 2013-09-26T07:14:32.453 に答える