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 を構成する方法

推薦する

React は入力値を取得し、2 つのメソッドの例を送信します

方法1: DOMが提供するイベントオブジェクトのターゲットイベント属性を使用して値を取得し、送信する...

MySQLにおけるトランザクション分離レベルの実装原理の詳細な説明

序文データベース トランザクションに関して言えば、トランザクションの ACID 特性、分離レベル、解...

SpringBoot と Docker の統合の詳細なプロセス

目次1. デモプロジェクト1.1 インターフェースの準備1.2 構成の準備2. Dockerがリモー...

Vue 仮想 Dom から実際の Dom への変換

別のツリー構造があるJavascriptオブジェクトでは、このツリーが本物であると伝えるだけでよいD...

Docker クリーニングキラー/Docker オーバーレイ ファイルがディスク領域を大量に占有する

[インターネット上の移行ファイルをすべて見ると、信頼性が低く、症状のみを治療し、根本的な原因を治療し...

JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JavaScript の DOM イベント モデルでは、オブジェクトの addEventListen...

Centos7.3 での mysql5.7 のインストールと設定のチュートリアル

この記事では、MySQL 5.7のインストールと設定のチュートリアルを参考までに紹介します。具体的な...

知っておくべき 7 つのネイティブ JS エラーの種類

目次概要1. 範囲エラー2. 参照エラー3. 構文エラー4. タイプエラー5. URIエラー6. 評...

MySQL データベースのマスター スレーブ分離のサンプル コード

導入MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作...

Kafka と Nginx の統合例

背景nginx-kafka-module は、Kafka を nginx に統合して、Web プロジ...

ウェブサイトをより高く、よりデザイン的に見せる方法

「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...

JavaScript で配列の変更を監視する方法

序文以前、defineProperty を紹介したとき、オブジェクトの変更のみを監視でき、配列の変更...

フロントエンド開発一般マニュアル(ツール、Webサイト、経験などを含む)

今日は何もすることがなかったので、いくつかのツール(オンラインとクライアント)、よく使用する URL...

Ubuntu 18.04 で中国語入力方法を設定する方法

Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...