phpmyadmin 中的存储过程

Posted

技术标签:

【中文标题】phpmyadmin 中的存储过程【英文标题】:Stored Procedure in phpmyadmin 【发布时间】:2016-12-02 11:54:48 【问题描述】:

我是第一次使用phpmyadmin。我在我的存储过程中不知道我正在使用我的代码。我不知道如何在phpmyadmin中做一个存储过程。

这是我的代码:

DELIMITER $$
CREATE PROCEDURE sp_1_service_card_report(IN service_card_no INT)
BEGIN
    DECLARE error_1 INT;

    SELECT  COUNT(service_card.customer_id)
    INTO    error_1 
    FROM    service_card
    WHERE   service_card.id =  27;

    DECLARE error_2 INT;

    SELECT  COUNT(service_card.serial_no_id)
    INTO    error_2 
    FROM    service_card
    WHERE   service_card.id =  27;

    IF error_1 > 0 AND error_2 > 0 THEN
     SELECT
       service_card.id as yes from service_card where service_card.id=27;
    ELSE
      SELECT service_card.customer_id as no from service_card.id=27;
    END IF ;

END $$
DELIMITER ;

这是我的错误:

mysql 说:文档

1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 'DECLARE error_2 INT; 附近使用的正确语法;

选择 COUNT(service_card.serial_no_id) INTO ' 在第 11 行

你们能帮我解决这个问题吗?我也花了 1 个小时在 *** 上搜索答案。

谢谢。

【问题讨论】:

我不知道您为什么会收到此错误,但您是否尝试将该行移至 error_1 声明行下方? 尝试将第二个 DECLARE 移到第一个之后。 我只是把 eror_2 放在最上面。由于逗号(;),我刚刚得到了红色的 x 点”我只是不明白我做错了什么。 else中的select需要where语句。 【参考方案1】:

DECLARE 语句必须首先放置,并且您在过程结束时的查询中有 select 错字:

DELIMITER $$
CREATE PROCEDURE sp_1_service_card_report(IN service_card_no INT)
BEGIN
    DECLARE error_1 INT;
    DECLARE error_2 INT;

    SELECT  COUNT(service_card.customer_id)
    INTO    error_1 
    FROM    service_card
    WHERE   service_card.id =  27;


    SELECT  COUNT(service_card.serial_no_id)
    INTO    error_2 
    FROM    service_card
    WHERE   service_card.id =  27;

    IF error_1 > 0 AND error_2 > 0 THEN
     SELECT
       service_card.id as yes from service_card where service_card.id=27;
    ELSE
      SELECT service_card.customer_id as no from service_card where service_card.id=27;
    END IF ;

END $$
DELIMITER ;

【讨论】:

以上是关于phpmyadmin 中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

mysql phpmyadmin 中的存储过程 #1064

phpMyAdmin - SELECT 语句在存储过程中的结果未显示

如何通过 phpMyAdmin 界面使用存储过程

在 phpmyadmin 中从 mysql 命令行调用 mysql 存储过程

如何在 phpMyAdmin 中查看我的存储过程?

在 MySql/phpmyadmin 中创建存储过程