mysql - 1305 - 程序 db.delete_catelog_item 不存在

标签 mysql sql stored-procedures

我刚刚在数据库 (name : db) 中创建了一个过程 (name : 'delete_catelog_item does') 并尝试运行该过程。然后我得到一个错误像这样 #1305 - PROCEDURE db.procedurename does not exist

我的查询

DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_catelog_item`(IN itemtocatid INT(11),IN shopinid INT(11),OUT out_put BOOL)
BEGIN
     DECLARE cont INT(11);
     DECLARE itemid INT(11) DEFAULT 0;
     SELECT a.ItmId INTO itemid FROM mas_shop_item_to_category as a INNER JOIN mas_shop_item as b ON (a.ItmID=b.ItmID AND b.IsDelete!=1 AND b.ShopID IN (SELECT ShopID FROM mas_shop WHERE ShopID=shopinid OR ParentID=shopinid)) WHERE a.ItmToCatID=itemtocatid AND a.IsDelete!=1;
     IF itemid!=0 THEN
             UPDATE  mas_shop_item_to_category SET `IsDelete` = '1' WHERE ItmToCatID=itemtocatid;
             SELECT count(ItmToCatID) INTO cont  FROM mas_shop_item_to_category WHERE ItmId=itemid AND IsDelete!=1;
             IF cont=0 THEN
                UPDATE mas_shop_item SET `IsDelete` = '1' WHERE ItmID=itemid;
             END IF;
             SET out_put=TRUE;
     ELSE
             SET out_put=FALSE;
     END IF;
END //
DELIMITER ;


Apache/2.2.14 (Ubuntu)
MySQL client version: 5.1.41
PHP extension: mysql

我无法找出真正的原因,但当我检查我的数据库中的过程时,它就在那里。 请帮忙找出问题所在。

谢谢。

最佳答案

从您提供的错误消息来看,您似乎试图通过名称 procedurenameCALL 您的过程,而您的CREATE PROCEDURE 语句将其命名为 delete_catelog_item。您需要通过定义它的名称CALL它!

关于mysql - 1305 - 程序 db.delete_catelog_item 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351825/

相关文章:

mysql - 如何简化/别名此 SQL 查询

php - 如何列出mysql数据库中的所有表

mysql - 比较同一个表中的两列

mysql - 如何将两个MySQL查询的结果合并为一个?

sql - 如何在此示例中过滤搜索结果

sql - Oracle/SQL中ROWID的数据类型

mysql - SQL 或 DQL,按自开始至今的计数分组

c# - Entity Framework ——mysql存储过程

MYSQL存储过程字符串参数列表和using IN子句

mysql - 在node-mysql中执行存储过程后返回的rows对象