ホームページ  >  記事  >  データベース  >  MySQL ストアド プロシージャで LIMIT 句をパラメータ化するにはどうすればよいですか?

MySQL ストアド プロシージャで LIMIT 句をパラメータ化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 05:54:03980ブラウズ

How to Parameterize the LIMIT Clause in MySQL Stored Procedures?

MySQL ストアド プロシージャの LIMIT 句のパラメータ化

質問:

ページング クラスを作成する際、MySQL ストアド プロシージャの 2 つのパラメータを渡すことを目的としています。 LIMIT句。ただし、次のような INT パラメータとクエリ構造を使用しようとすると、エラーが発生します:

<code class="sql">SELECT *
FROM
`MyTable`
LIMIT
MyFirstParamInt, MySecondParamInt</code>

このパラメータ化を実現する別のアプローチはありますか、それとも動的クエリの構築と実行が唯一の解決策ですか?

回答:

MySQL 5.5.6 より前:

バージョン 5.5.6 より前では、MySQL ストアド プロシージャでは LIMIT 句のパラメータ化がサポートされていませんでした。 。そのため、クエリを動的に構築して実行することが唯一の実現可能な方法でした。

MySQL 5.5.6 以降:

MySQL 5.5.6 以降は、次のようになりました。 INTEGER パラメータを使用して LIMIT 句と OFFSET 句をパラメータ化できます。これを行うには、以下に示すように、ストアド プロシージャのパラメーターを LIMIT と OFFSET に直接渡すだけです。

<code class="sql">SELECT *
FROM
`MyTable`
LIMIT ? OFFSET ?</code>

この例では、 ?は、渡す予定の 2 つの INTEGER パラメーターのプレースホルダーを表します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。