MySQL ストアド関数の詳細な紹介

MySQL ストアド関数の詳細な紹介

1. ストアド関数を作成する

構文形式:

CREATE FUNCTION 関数名 (パラメータ名 パラメータタイプ、...) 
戻り値 戻り値の型 BEGIN
	関数本体#関数本体にはRETURN文ENDを含める必要があります

例:

パラメータリスト:

FUNCTIONは常に默認為IN參數

RETURNSの後のステートメントは、関数によって返されるデータのタイプを示します。

RETURNS 句は FUNCTION に対してのみ指定でき、関数に対しては強制です。これは関数の戻り値の型を指定するために使用され、関数本体にはRETURN valueステートメントが含まれている必要があります。

関数本体ではBEGIN…ENDを使用して SQL コードの開始と終了を示すこともできます。

関数本体にステートメントが 1 つだけ含まれている場合は、可以省略BEGIN…END

2. ストアド関数の呼び出し

MySQL では、ストアド関数の使用方法は MySQL 内部関数と同じです。つまり、ユーザー定義のストアド関数は、MySQL 内部関数と同じ性質を持ちます。違いは、ストアド関数は用戶自己定義のに対し、内部関数は開發者定義です。

SELECT関数名(引数リスト)

3. 保存された関数を削除する

文法構造:

DROP FUNCTION [IF EXISTS] ストアドファンクション名

4. ストアドプロシージャを表示する

1. SHOW CREATEステートメントを使用して、ストアドプロシージャと関数の作成情報を表示します。

文法構造:

SHOW CREATE FUNCTION ストアドファンクション名

2. SHOW STATUSステートメントを使用して、ストアドファンクションのステータス情報を表示します。

文法構造:

関数ステータスを表示 [LIKE 'pattern']

このステートメントは、データベース、名前、タイプ、作成者、作成日、変更日などのサブルーチンの特性を返します。

[LIKE 'pattern']保存された関数の名前と一致しますが、省略できます。省略した場合、MySQL データベースに格納されているすべての関数に関する情報が一覧表示されます。

例:

#名前がselectmysql>で始まるストアド関数をクエリする SHOW FUNCTION STATUS LIKE 'SELECT%';
************************** 1. 行 ****************************
                  データベース: test_db
                名前: SelectAllData
                タイプ: FUNCTION 
             定義者: root@localhost
            更新日: 2021-10-16 15:55:07
             作成日: 2021-10-16 15:55:07
       セキュリティタイプ: DEFINER
             コメント: 
文字セットクライアント: utf8mb4
照合接続: utf8mb4_general_ci
  データベース照合: utf8mb4_general_ci

3. information_schema.Routinesテーブルからストアドファンクションの情報を表示する

MySQL のストアド関数の情報は、information_schema データベースの Routines テーブルに保存されます。このテーブルのレコードを照会することで、ストアド関数の情報を照会できます。

文法構造:

SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME = 'ストアド関数名' [AND ROUTINE_TYPE = 'FUNCTION '];

注: MySQL データベースに存在存儲過程和函數名稱相同的情況場合は、クエリがストアド プロシージャ用か関数用かを示すために、 ROUTINE_TYPEクエリ条件を指定するのが最適です。

5. ストレージ機能を変更する

ストレージ関数を変更しても関数の機能には影響せず、関連する機能のみが変更されます。これは ALTER ステートメントを使用して行われます。

ALTER FUNCTION ストアド関数名;

6. ストアド関数とストアドプロシージャの比較

キーワード呼び出し構文戻り値アプリケーションシナリオ
ストアドプロシージャ手順ストアドプロシージャを呼び出す() 0以上と理解される一般的にアップデートに使用されます
ストアド関数関数SELECT関数() 1つだけ一般的には、クエリ結果が値であり、返される場合に使用されます。

さらに、ストアド関数はクエリ ステートメントで使用できますが、ストアド プロシージャは使用できません。逆に、ストアド プロシージャはより強力で、ストアド関数では利用できないテーブル操作 (テーブルの作成、テーブルの削除など) やトランザクション操作を実行する機能があります。

7. エクササイズを強化する

#前提条件 CREATE TABLE employees
として
atguigudb.`employees` から * を選択します。 

テーブルの作成 
部門 AS
atguigudb.`departments` から * を選択します。 
#1. 会社の従業員数を返す関数 get_count() を作成します。# パラメーターと戻り値 SET GLOBAL log_bin_trust_function_creators = 1;

区切り文字 $
関数 get_count() を作成する
戻り値 INT
始める
	RETURN (SELECT COUNT(*) FROM employees);
終了 $
区切り文字 ;

知らせ:

ストアドyou might want to use the less safe log_bin_trust_function_creators variable 。その後、メモを確認したところ、この問題を解決する 1 つの方法は、SQL ステートメントSET GLOBAL log_bin_trust_function_creators = 1;を実行することであることがわかりました。

#2. 従業員の ID に応じて給与を返す関数 ename_salary() を作成します。# テーブル構造をクエリして、返されるデータのタイプを確認します。DESC employees;

区切り文字 $
関数 ename_salary(id INT) を作成します。
DOUBLE(8,2)を返します
始める
	戻り値 (SELECT salary FROM employees WHERE employee_id = id);
終了 $
区切り文字 ;

#クエリ結果 SELECT ename_salary(100);

最後に愛を:学ぶべきこと:1. ストアド関数を作成するための基本構文を使用する。2. ストアド関数の呼び出し方を学ぶ。3. ストアド関数とストアドプロシージャの類似点と相違点を知る

MySQL ストアドファンクションの詳細な紹介に関するこの記事はこれで終わりです。より関連性の高い MySQL ストアドファンクションのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLのストアドプロシージャと関数を徹底的に理解する
  • MySQL ストアドファンクションとストアドプロシージャの違いの分析
  • MYSQLデータベースでよく使われる関数の紹介
  • MySQLバッチは関数ストアドプロシージャを通じてデータを挿入します
  • MySQL でのストアド プロシージャと関数の作成の詳細な説明
  • MySQL よく使われる関数の詳細な概要
  • MySQL関数の包括的な概要
  • MYSQL関数の使い方

<<:  Linux でのインストール中にソフトウェア パッケージの依存関係レポートに関連する問題の解決策

>>:  HTML ページの先頭に戻るいくつかの実装の概要

推薦する

HTMLで細い線のテーブルを作成する簡単な例

この細線の表を作成する方法については、Baidu で検索すると、表に対して border="...

JS 開発効率を上げる4つの超実践的なヒント

目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

jsシミュレーションでJingdongの詳細ページで画像を拡大する効果を実現

この記事では、Jingdongの詳細ページの画像の拡大を実現するためのjsの具体的なコードを紹介しま...

Vue.jsは音楽プレーヤーを実装します

この記事では、音楽プレーヤーを実装するためのVue.jsの具体的なコードを参考までに共有します。具体...

yum を使用して rpm と関連する依存関係をダウンロードして、docker をオフラインでインストールします。

yum を使用してすべての依存関係を一緒にインストールできますが、–downloadonly –d...

Dockerイメージ内のファイルを表示する方法

Dockerイメージ内のファイルを表示する方法1. すでに実行中の場合すでに実行中のイメージについて...

Vue3でカルーセルコンポーネントをカプセル化する方法

目的カルーセルコンポーネントをカプセル化して直接使用します。具体的な内容は以下のとおりです。一般的な...

Vuex でゲッターとアクションを使用するための追加手順

予備的注釈1.Vue2.xとVue3.xの違い: Vue 3.x にはヘルパー関数はありません。 V...

Vue.js のミックスインの詳細な説明

ミックスインは、コンポーネントに分散された再利用可能な機能を柔軟な方法で提供します。 Mixin オ...

JavaScript イベント委任の原則

目次1. イベント委任とは何ですか? 2. イベント委任の原則3. イベント委託の役割1. イベント...

Vuex環境の詳細な説明

目次Vuex環境を構築する要約するVuex環境を構築するsrcディレクトリにフォルダstoreを作成...

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

ウェブインターフェースデザインでウェブサイトのスタイルガイドを作成する方法(画像とテキスト付き)

スタイル ガイドとは何でしょうか? 簡単に言えば、ストーリーを伝える方法を説明するドキュメントです。...

内部 IP アクセスのみを許可する Nginx プロキシ設定を追加する方法

位置 / { インデックス index.jsp; proxy_next_upstream http...