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

推薦する

HTMLタグと基本要素の学習のまとめ

1. HTML の要素とタグ<br />要素は、1 つのタグまたは 1 組のタグによって...

MySQL フラッシュバック ツール binlog2sql の詳細なインストールと設定のチュートリアル

概要binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

MySQL 5.7 データベースのインストール手順の個人的な要約

1.mysql-5.7.19-winx64.zip(これは無料のインストールバージョンで、約318 ...

関連するプロパティのリストを含む HTML エリア イメージ ホットスポットの使用の概要

<area> タグは主にイメージマップで使用されます。イメージマップにアクティブ領域 (...

フロントエンドAIカットのコツ(体験談)

AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...

VMware Workstation のダウンロードとインストールの詳細なチュートリアル

仮想マシンは非常に便利なテストソフトウェアです。ハードウェアに損傷を与えることなく、さまざまなテスト...

VUE ユニアプリライフサイクルに関する簡単な説明

目次1. アプリケーションライフサイクル2. ページのライフサイクルコンポーネントライフサイクル要約...

Linuxでkv設定ファイルを変更するにはsedコマンドを使用します

sed は Unix の文字ストリーム エディタ、つまりストリーム エディタです。行指向であり、行単...

Linux でリモート サーバー ファイルの状態を表示する方法

以下のように表示されます。 test コマンドはファイルが存在するかどうかを判断します。 ssh u...

CSS で TikTok テキスト揺れエフェクトを実装する例

日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...

レスポンシブなカードホバー効果を実現するための HTML+CSS

目次成し遂げる:要約:言うことはあまりありませんが、まずは効果を見てみましょう。 カードホバー、レス...

CSS3 を使用して中心点の周りに要素を配置する方法の例

この記事では、CSS3 を使用して中心点を中心に要素をレイアウトする方法の例を紹介します。詳細は次の...

クエリプロファイラを使用して MySQL ステートメントの実行時間を表示する方法

前回の記事では、MySQL ステートメントの実行時間をチェックする 2 つの方法を紹介しました。今日...

Axios を使用して Vue2 がリクエストを開始する詳細なプロセス記録

目次序文Axiosのインストールと設定シンプルなGETリクエストを開始するPOSTリクエストを行うシ...

Vueは小さな天気予報アプリケーションを実装します

これは私が Vue フレームワークを独学していたときに真似したウェブサイトです。いくつかの都市の天気...