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 中的存储过程的主要内容,如果未能解决你的问题,请参考以下文章
phpMyAdmin - SELECT 语句在存储过程中的结果未显示