40

次のような区切り記号を使用して、MySQL でストアド プロシージャを作成しようとしています。

use am;

DELIMITER $$

CREATE PROCEDURE addfields()
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE acc INT(16);
  DECLARE validId INT DEFAULT 0;

END $$

DELIMITER ;

それは私にエラーを与えます:

#1304 - PROCEDURE addfields already exists

区切り記号を使用してストアド プロシージャを作成し、それが最初に存在する場合は削除するための適切な構文は何ですか?

4

5 に答える 5

62

デリミタ付きのMYSQL ストアド プロシージャのサンプルとその呼び出し方法を次に示します。

DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_user_login` $$
CREATE DEFINER=`root`@`%` PROCEDURE `sp_user_login`(
  IN loc_username VARCHAR(255),
  IN loc_password VARCHAR(255)
)
BEGIN

  SELECT user_id,
         user_name,
         user_emailid,
         user_profileimage,
         last_update
    FROM tbl_user
   WHERE user_name = loc_username
     AND password = loc_password
     AND status = 1;

END $$

DELIMITER ;

呼び出し元、mysql_connection 仕様および

$loginCheck="call sp_user_login('".$username."','".$password."');";

プロシージャからの結果が返されます。

于 2013-04-03T11:53:02.163 に答える
0

以下に示すように、簡単なMySQLプロシージャを作成しました。

DELIMITER //
CREATE PROCEDURE GetAllListings()
 BEGIN
 SELECT nid, type, title  FROM node where type = 'lms_listing' order by nid desc;
END //
DELIMITER;

これに従ってください。プロシージャが作成されたら、同じものを確認して実行できます。

于 2018-07-19T11:58:41.647 に答える