【问题标题】:Stored Procedure in phpmyadminphpmyadmin 中的存储过程
【发布时间】: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 个小时在 stackoverflow 上搜索答案。

谢谢。

【问题讨论】:

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

标签: php mysql stored-procedures phpmyadmin


【解决方案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 ;

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 2020-02-26
    • 2016-05-31
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多