ホームページ > データベース > mysql チュートリアル > 文字列配列を MySQL ストアド プロシージャに渡すにはどうすればよいですか?

文字列配列を MySQL ストアド プロシージャに渡すにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 20:33:11
オリジナル
894 人が閲覧しました

How Can I Pass a String Array to a MySQL Stored Procedure?

MySQL ストアド ルーチンに配列を渡す

MySQL でストアド ルーチンを操作する場合、次の配列を渡す必要がある場合があります。文字列をパラメータとして使用します。 MySQL には明示的な配列データ型がないため、このタスクには課題が生じます。ただし、動的 ​​SQL 手法を活用することで、この機能を実現できます。

解決策: 動的 SQL クエリの構築

ストアド ルーチンに配列を渡すには、次のようにします。動的 SQL を使用できます。動的 SQL では、文字列の連結を使用して実行時に SQL クエリを構築します。次のストアド プロシージャは、このアプローチを示しています。

DELIMITER $$

CREATE PROCEDURE GetFruits(IN fruitArray VARCHAR(255))
BEGIN

  SET @sql = CONCAT('SELECT * FROM Fruits WHERE Name IN (', fruitArray, ')');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;

END
$$

DELIMITER ;
ログイン後にコピー

このストアド プロシージャ内:

  • fruitArray: 文字列のカンマ区切りリストを受け取る入力パラメータ。
  • @sql: 動的に構築された SQL クエリを保持する変数。
  • PREPARE:動的 SQL クエリの実行を準備します。
  • EXECUTE: 準備されたクエリを実行します。
  • DEALLOCATE PREPARE: 準備されたクエリをメモリから解放します。

使用法:

ストアド プロシージャを利用するには、それを呼び出すことができます。

SET @fruitArray = '\'apple\',\'banana\'';
CALL GetFruits(@fruitArray);
ログイン後にコピー

このアプローチにより、提供された配列に基づいてクエリを動的に作成および実行でき、MySQL にネイティブの配列データ型がない場合の回避策が提供されます。

以上が文字列配列を MySQL ストアド プロシージャに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート