ホームページ > データベース > mysql チュートリアル > mysql ストアド プロシージャを使用する際のヒントは何ですか?

mysql ストアド プロシージャを使用する際のヒントは何ですか?

coldplay.xixi
リリース: 2020-10-20 15:58:41
オリジナル
2524 人が閲覧しました

Mysql ストアド プロシージャの使用に関するヒントは次のとおりです: 1. in モード パラメータを使用してストアド プロシージャを作成する; 2. out モード パラメータを使用してストアド プロシージャを作成する; 3. inout モード パラメータを使用してストアド プロシージャを作成する。

mysql ストアド プロシージャを使用する際のヒントは何ですか?

Mysql ストアド プロシージャの使用上のヒント:

定義

java のメソッドに似たバッチ ステートメントとして理解される、事前にコンパイルされた SQL ステートメントのセット

#1. コードの再利用性の向上

2. 操作の簡素化

3. 削減コンパイルの数とデータベース サーバーへの接続の数、効率の向上

#作成構文

CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
ログイン後にコピー

パラメータ リストには 3 つの部分が含まれます

パラメータ モード パラメータ名 パラメータ タイプ

例:

in stuname varchar(20)
ログイン後にコピー

#パラメータ モード:

    # in: このパラメータは入力として使用できます。つまり、このパラメータは呼び出し元が値を渡す必要があります。
  • out: このパラメータは出力として使用できます。つまり、このパラメータです。 can 戻り値として
  • #inout: このパラメーターは入力と出力の両方として使用できます。つまり、パラメーターは値を渡す必要があり、値を返すことができます
  • ストアド プロシージャ本体に 1 文しかない場合は、begin end を省略できます。
  • ストアド プロシージャ本体内の各 SQL ステートメントの終わりは前に置く必要があります。セミコロンで区切ります。
  • ストアド プロシージャの終わりは区切り文字を使用してリセットできます
  • 構文:

delimiter 结束标记
ログイン後にコピー
Case:

delimiter $
ログイン後にコピー
呼び出し構文

CALL 存储过程名(实参列表);
ログイン後にコピー
空のパラメータ リスト

5 つのレコードを管理テーブル

SELECT * FROM admin;
DELIMITER $
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO admin(username,`password`) 
VALUES('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000');
END $
#调用
CALL myp1()$
ログイン後にコピー

モード パラメーターを使用してストアド プロシージャを作成します

创建存储过程实现 根据女神名,查询对应的男神信息
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
SELECT bo.*
FROM boys bo
RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
WHERE b.name=beautyName;
END $
#调用
CALL myp2('柳岩')$
ログイン後にコピー
ユーザーが正常にログインしたかどうかに関係なく、ストアド プロシージャの実装を作成します
CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
BEGIN
DECLARE result INT DEFAULT 0;#声明并初始化
SELECT COUNT(*) INTO result#赋值
FROM admin
WHERE admin.username = username
AND admin.password = PASSWORD;
SELECT IF(result>0,'成功','失败');#使用
END $
#调用
CALL myp3('张飞','8888')$
ログイン後にコピー

Create out モード パラメータ ストアド プロシージャ

入力された女神名に基づいて、対応する男神の名前を返します

CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
BEGIN
SELECT bo.boyname INTO boyname
FROM boys bo
RIGHT JOIN
beauty b ON b.boyfriend_id = bo.id
WHERE b.name=beautyName ;
END $
ログイン後にコピー

入力された女神に基づいて、対応する男神の名前とチャーム値を返しますname

CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT) 
BEGIN
SELECT boys.boyname ,boys.usercp INTO boyname,usercp
FROM boys 
RIGHT JOIN
beauty b ON b.boyfriend_id = boys.id
WHERE b.name=beautyName ;
END $
#调用
CALL myp7('小昭',@name,@cp)$
SELECT @name,@cp$
ログイン後にコピー

inout モード パラメーターを使用してストアド プロシージャを作成します

2 つの値 a と b を渡し、最終的に a と b の両方が 2 倍になって返されます。

CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
#调用
SET @m=10$
SET @n=20$
CALL myp8(@m,@n)$
SELECT @m,@n$
ログイン後にコピー

ストアド プロシージャの削除

drop procedure 存储过程名
DROP PROCEDURE p1;
DROP PROCEDURE p2,p3;#×
ログイン後にコピー
ストアド プロシージャ情報の表示

DESC myp2;
SHOW CREATE PROCEDURE  myp2;
ログイン後にコピー

以上がmysql ストアド プロシージャを使用する際のヒントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート