簡體   English   中英

無法創建過程phpMyAdmin MYSQL錯誤

[英]Can't create procedure phpMyAdmin MYSQL error

救命!! 我被卡住了,我不知道怎么了。
我正在使用MySql,但是它不會創建過程,我沒有主意。

CREATE PROCEDURE sc_new_ord(IN inscid INT, IN incust_id INT, IN indeltype_id INT, IN duty_it INT, IN delcost INT, OUT ttmount INT, OUT outordid INT)
BEGIN
  DECLARE ord_id INT;
  DECLARE total INT;

  INSERT INTO tbl_orders (customer_id, ship_type_id, rate_id, status) VALUES
         (incust_id, indeltype_id, duty_it,0);

  SELECT LAST_INSERT_ID() INTO inscid;

  INSERT INTO tbl_ord_det (ord_id,inv_id, item, qtty, price)
  SELECT ord_id, tbl_inventory.Inv_id, tbl_inventory.Item, tbl_shp_ct.qtty,
              COALESCE(NULLIF(tbl_inventory.Offer_Price, 0), tbl_inventory.Price) AS price
  FROM        tbl_shp_ct
  INNER JOIN  tbl_inventory
                ON tbl_shp_ct.inv_id = tbl_inventory.Inv_id
  WHERE tbl_shp_ct.sc_id = inscid AND tbl_shp_ct.buy_now;
    -- total amount
  UPDATE tbl_orders
  SET    tt_mnt = (SELECT SUM(price * qtty)FROM tbl_ord_det WHERE ord_id = ord_id)
  WHERE  ord_id = ord_id;
  CALL sc_empty (inscid);
  SELECT (SUM(price * qtty) FROM tbl_ord_det WHERE  ord_id = ord_id) as tt INTO total;
  SELECT total, delcost, (total+delcost) INTO ttmount;
  SELECT ord_id INTO outordid;
END

完全錯誤:MySQL說:文檔

1064-您的SQL語法有誤; 檢查與您的MariaDB服務器版本相對應的手冊以獲取在第3行的''附近使用的正確語法

如果您使用的是mysql數據庫,請嘗試按以下方法操作,如果仍然遇到錯誤,則共享錯誤-

DELIMITER $$
CREATE PROCEDURE sc_new_ord(IN inscid INT, IN incust_id INT, IN indeltype_id INT, IN duty_it INT, IN delcost INT, OUT ttmount INT, OUT outordid INT)
BEGIN
  DECLARE ord_id INT;
  DECLARE total INT;

  INSERT INTO tbl_orders (customer_id, ship_type_id, rate_id, status) VALUES
         (incust_id, indeltype_id, duty_it,0);

  SELECT LAST_INSERT_ID() INTO inscid;

  INSERT INTO tbl_ord_det (ord_id,inv_id, item, qtty, price)
  SELECT ord_id, tbl_inventory.Inv_id, tbl_inventory.Item, tbl_shp_ct.qtty,
              COALESCE(NULLIF(tbl_inventory.Offer_Price, 0), tbl_inventory.Price) AS price
  FROM        tbl_shp_ct
  INNER JOIN  tbl_inventory
                ON tbl_shp_ct.inv_id = tbl_inventory.Inv_id
  WHERE tbl_shp_ct.sc_id = inscid AND tbl_shp_ct.buy_now;
    -- total amount
  UPDATE tbl_orders
  SET    tt_mnt = (SELECT SUM(price * qtty)FROM tbl_ord_det WHERE ord_id = ord_id)
  WHERE  ord_id = ord_id;
  CALL sc_empty (inscid);
  SELECT (SUM(price * qtty) FROM tbl_ord_det WHERE  ord_id = ord_id) as tt INTO total;
  SELECT total, delcost, (total+delcost) INTO ttmount;
  SELECT ord_id INTO outordid;
END$$
DELIMITER ;

更改

SELECT (SUM(price * qtty) FROM tbl_ord_det WHERE  ord_id = ord_id) as tt INTO total;

SELECT SUM(price * qtty) as tt FROM tbl_ord_det WHERE  ord_id = ord_id INTO total;

通過將as tt移動到正確的位置。

http://sqlfiddle.com/#!9/25a842

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM