MySQL ストアド関数(カスタム関数)の定義と使用方法の詳細な説明

MySQL ストアド関数(カスタム関数)の定義と使用方法の詳細な説明

ストアド関数

ストアド関数とは: SQL コードの一部をカプセル化し、特定の関数を完了して、結果を返します。

ストアド関数の構文は次のとおりです。

関数を作成する function([関数パラメータ[,….]]) 戻り値の型を返す Begin

    もし(

      戻り値(返されたデータ)

    それ以外 

      戻り値(返されたデータ)

    終了の場合;

  終わり;

例えば、create function count_news(hits int) returns int です。

ストアド プロシージャの戻りパラメータとは異なり、ストアド関数は定義時にどの変数が戻りパラメータであるかを直接宣言しません。代わりに、戻りパラメータのデータ型を宣言するために returns のみを使用します。戻りパラメータは、関数本体で return を使用して返されるデータ変数を返すことで表されます。以下の点に留意することが重要です。
ストアド関数は入力パラメータのみをサポートし、入力パラメータの前に IN または INOUT はありません。

ストアドファンクションの制限

フロー制御ステートメント (IF、CASE、WHILE、LOOP、WHILE、REPEAT、LEAVE、ITERATE) も有効です。

変数宣言 (DECLARE) と代入 (SET) は有効です。

条件文を許可します。

例外処理ステートメントも許可されます。

ただし、関数には制限があることに留意してください。関数内ではテーブルにアクセスできません。したがって、関数内で次のステートメントを使用することは違法です。

ALTER 'CACHE INDEX' CALL COMMIT CREATE DELETE
DROP 'FLUSH PRIVILEGES' GRANT INSERT KILL
ロック 最適化 修復 置換 取り消し
ロールバックセーブポイント 'テーブルから選択'
「システム変数の設定」 「トランザクションの設定」
'トランザクションの開始' を表示 切り捨て 更新

ストアド関数とストアドプロシージャの違い

1. ストアド関数には戻り値が 1 つだけありますが、ストアド プロシージャには戻り値がありません。

2. 関数には入力パラメータのみ設定でき、「in」は設定できませんが、ストアド プロシージャには複数の「in」、「out」、および「inout」パラメータを設定できます。

3. ストアド プロシージャ内のステートメントはより強力です。ストアド プロシージャは非常に複雑なビジネス ロジックを実装できますが、関数には多くの制限があります。たとえば、関数内で挿入、更新、削除、作成などのステートメントを使用することはできません。ストアド関数はクエリ作業のみを完了し、入力パラメータを受け入れて結果を返すことができます。つまり、関数によって実装される機能はより対象を絞ったものになります。

4. ストアド プロシージャはストアド関数を呼び出すことができます。ただし、関数はストアド プロシージャを呼び出すことはできません。

5. ストアド プロシージャは通常、独立した部分 (呼び出し) として実行されます。関数はクエリ ステートメントの一部として呼び出すことができます。

例1:

識別子

名前

QQ

電話

1

秦雲

10102800

13500000

2

路上で

10378

13600000

3

レオ

10000

13900000

識別子

名前

コンピュータの時間

管理者

1

秦雲

2004-1-1

李大偉

2

秦雲

2005-1-1

馬華騰

3

路上で

2005-1-1

馬華騰

4

秦雲

2005-1-1

李大偉

5

路上で

2005-1-1

李大偉

達成目的:

表 1 からすべての担当者のリストを取得し、表 2 から各担当者がコンピューターと管理者を使用した回数を取得します。

ユーザーリスト ユーザー数 管理者 Qin Yun 3 Li Dawei、Ma Huateng、Li Dawei 途中 2 Ma Huateng、Li Dawei
レオ0

以下もご興味があるかもしれません:
  • MySQLカスタム関数CREATE FUNCTIONの例
  • MySQL でのカスタム関数とストアド プロシージャの作成に関する詳細な説明
  • MySQL 中国語文字変換ピンインカスタム関数と使用例 (最初の単語の最初の文字)
  • MySQLカスタム関数についての簡単な説明
  • MySQL でカスタム関数を使用して文字列から数値を抽出する方法
  • MySQLでカスタム関数を作成する際の問題
  • MySQLカスタム関数の簡単な使用例
  • 正の整数かどうかを判断するMYSQLカスタム関数の例コード
  • MySQLカスタム関数とストアドプロシージャの詳細な説明
  • MySQLはカスタム関数を使用して親IDまたは子IDを再帰的に照会します
  • MySQLカスタム関数の原理と使用法の分析

<<:  小規模プログラムへのデータキャッシュ機構の応用と実装

>>:  Windows Server 2019 で NAS を構成する方法

推薦する

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

MySQLの日付と時刻の間隔計算の分析例

この記事では、例を使用して、MySQL の日付と時刻の間隔計算について説明します。ご参考までに、詳細...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

はじめに: HTML の基本的なタグと属性の簡単な紹介

HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...

MySQLのslave_exec_modeパラメータの詳細な説明

今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...

MySQL 8.0 の降順インデックス

序文インデックスが順序付けられていることは誰もが知っていると思いますが、MySQL の以前のバージョ...

JavaでTomcatサーバーを起動/停止する方法

1. プロジェクト構造 2.Tomcat.javaを呼び出す パッケージ com.calltomca...

TypeScript ジェネリックパラメータのデフォルト型と新しい厳密なコンパイルオプション

目次概要コンポーネントクラスの型定義を作成するジェネリック型を使用してPropsとStateを定義す...

HTML テーブル マークアップ チュートリアル (28): セルの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、セルごとに異なる境界線の色を設定できます。基本的な構文<TD 境界...

重要なmysqlログファイルの概要

著者: 丁易出典: https://chengxuzhixin.com/blog/post/mysq...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

MySQL空間関数を使用してロケーションパンチインを実装するための完全な手順

序文プロジェクトの要件は、ユーザーの現在の位置が特定の地理的位置範囲内にあるかどうかを判断することで...

MySQL カーソルの原理と使用例の分析

この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...

WeChat アプレットのカスタム タブバー コンポーネント

この記事では、WeChatアプレットのカスタムタブバーコンポーネントの具体的なコードを参考までに紹介...

シンプルな広告ウィンドウを実現するjs

この記事では、参考までに、シンプルな広告ウィンドウを実装するためのjsの具体的なコードを紹介します。...