簡體   English   中英

在 MySQL 中創建存儲過程的問題

[英]Problem creating Stored Procedure in MySQL

我已經在 MySQL 中編寫了下面提到的腳本來創建存儲過程:

CREATE PROCEDURE `AddBranch`(
IN `inCompanyCode` char(3), 
IN `inBranchCode` varchar(6), 
IN `inBankBranch` varchar(40)
)
BEGIN
    DECLARE branchExists TINYINT DEFAULT 0;
    SELECT Count(*) INTO branchExists FROM branches WHERE CompanyCode = inCompanyCode AND BranchCode = inBranchCode;
    IF branchExists = 0 THEN
        INSERT INTO branches VALUES (inCompanyCode, inBranchCode, inBankBranch);
    ELSE
        UPDATE branches SET Branch = inBankBranch
        WHERE CompanyCode = inCompanyCode AND BranchCode = inBranchCode;
    END IF;
END;

運行查詢時,顯示的錯誤消息是:

1064 - 你的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以了解在第 7 行的 '' 附近使用的正確語法

我什至嘗試過DECLARE branchExists TINYINT(1) DEFAULT 0; 但問題仍然存在。

第 7 行有什么問題?

問候

  • 您需要將 Delimiter 重新定義為其他內容(例如: $$ ),而不是 ( ; )。
  • 同樣作為安全措施,檢查同名過程是否已經存在( DROP PROCEDURE IF EXISTS
  • 最后,將DELIMITER重新定義為;

將存儲過程改為如下:

DELIMITER $$
DROP PROCEDURE IF EXISTS `AddBranch`$$

CREATE PROCEDURE `AddBranch`(
IN `inCompanyCode` char(3), 
IN `inBranchCode` varchar(6), 
IN `inBankBranch` varchar(40)
)
BEGIN
    DECLARE branchExists TINYINT DEFAULT 0;
    SELECT Count(*) INTO branchExists FROM branches WHERE CompanyCode = inCompanyCode AND BranchCode = inBranchCode;
    IF branchExists = 0 THEN
        INSERT INTO branches VALUES (inCompanyCode, inBranchCode, inBankBranch);
    ELSE
        UPDATE branches SET Branch = inBankBranch
        WHERE CompanyCode = inCompanyCode AND BranchCode = inBranchCode;
    END IF;
END$$

DELIMITER ;

暫無
暫無

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

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