繁体   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