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 ファイルにフラッシュ ビデオ形式 (flv、swf) ファイルを埋め込む方法

Flash ファイル形式: .FLV および .SWFフラッシュ ビデオ形式には、.flv と .s...

Javascript で関数のカリー化とデカリー化を実装する方法

関数のカリー化(黒い疑問符の顔)? ? ?カレー(黒い疑問符の顔)? ? ?これは完璧な中国語翻訳で...

HTMLページでよく使われるいくつかの小さなメソッド

<Head>タグに追加する<meta http-equiv="pragm...

HTMLページのヘッダーコードは完全に明確です

以下のコードはすべて <head>...</head> の間にあり、具体的な...

MySqlデータベースの基礎知識のまとめ

目次基本的なデータベース操作2) データベースを表示する3) データベースを選択する4) データベー...

Vueは時間カウントダウン機能を実装する

この記事では、Vueの具体的なコード例を参考までに紹介します。具体的な内容は以下のとおりです。必要:...

React Contextの理解と応用についてお話ししましょう

目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...

CSS3 タブアニメーションの例 背景切り替えの動的効果

CSS 3 アニメーションの例 - タブの背景切り替えの動的効果、具体的なコードは次のとおりです。 ...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

Nginx で 403 forbidden を解決するための完全な手順

ウェブページに403 Forbiddenと表示されるNginx (yum インストール ログは通常 ...

CentOS 7.4 で MySQL 5.7.28 バイナリモードをインストールする方法

Linuxシステムバージョン: CentOS7.4 MySQL バージョン: 5.7.28 Linu...

MySQLは「order by」がどのように機能するかを簡単に理解します

並べ替えの場合、order by は非常に頻繁に使用するキーワードです。インデックスに関するこれまで...

Webデザイン: タイトルが完全に表示できない場合

<br />今日、新しくなった ChinaUI.com の Web サイトを見たのですが...

Web2.0: 情報過多の原因と解決策

<br />情報の重複、情報過多、情報強迫、パーソナライズされたカスタマイズ、検索エンジ...

MySQL InnoDB ストレージ エンジンの詳細

序文MySQL では、InnoDB はストレージ エンジン レイヤーに属し、プラグインとしてデータベ...