2012-04-27 27 views
2

データベース(name : db)にプロシージャ(name : 'delete_catelog_item does')を作成し、そのプロシージャを実行しようとしました。このようなエラーが表示されるのは#1305 - PROCEDURE db.procedurename does not existです。1305 - PROCEDURE db.delete_catelog_itemは存在しません

マイクエリ

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 

私は、実際の理由を把握することはできませんが、私は私のデータベースに手順を確認したときにそれがありました。 問題の発見にお手伝いください。

ありがとうございました。

答えて

0

あなたが与えたエラーメッセージから、あなたのCREATE PROCEDURE文はそれに名前delete_catelog_itemを与えたのに対し、名前procedurenameして手続きをCALLしようとしてきたかのように、それが見えます。定義されている名前でCALLにする必要があります!

+0

1305 - 手順db.delete_catelog_itemが存在しません。これは実際のエラーメッセージです。私は私が作成した同じ名前を使用してプロシージャを呼び出そうとしました。 –

+0

@ルシルサンドルワン:そうです。質問を編集してそこのメッセージを修正する必要がありますか? 'db'はプロシージャを作成したデータベースの名前ですか? – eggyal

+0

はいdbはdbの名前です。 –

0

私は解決策を見つけ出しました。問題はdb名にありました。その名前が変更された後に"first.second"のように"."という名前が付けられていました。私を助けてくれてありがとう。

関連する問題