当社の MySQL サーバーに新しいストアド プロシージャを追加する必要があります。ちょっと違うだけなので既存のものを流用し、追加フィールドを追加し、プロシージャの名前を変更しました。奇妙なことは、ステートメントを実行したいときに、次のように返されることです。
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
この行の 0 を参照: SET @update_id := 0; 奇妙なのは、 SHOW CREATE PROCEDURE を使用してそのストアド プロシージャをクエリしたことです。データベースに保存され、正常に動作しています。新しいストアド プロシージャとして使用することはできません (新しいテスト データベースに適用しようとしても、新しい名前を付けて既存のデータベースで使用しても)。解決策をインターネットで検索しました。残念ながら役に立ちません。新しいテーブルといくつかのデモ値を使用して新しいデータベースをセットアップし、元の変更されていないストアド プロシージャを実行しようとしました。まったく同じエラーが返されます。
私が話している現在使用され、機能しているストアドプロシージャは次のとおりです。
CREATE DEFINER=`root`@`localhost` PROCEDURE `customer_getcard`(IN Iinstance INT, IN Itimebuy DOUBLE, IN Iprice DECIMAL(10,2), IN Itariff INT, IN Icomment VARCHAR(128))
BEGIN
SET @update_id := 0;
UPDATE customer_shop SET state = 1, id = (SELECT @update_id := id), instance=Iinstance, timebuy=Itimebuy, price=Iprice, comment=Icomment WHERE tariff=Itariff AND state = 0 LIMIT 1;
SELECT * FROM customer_shop WHERE id = @update_id;
END
何が悪いのか完全にわからないので、皆さんが私を助けてくれることを願っています。:/
よろしく、マーク