検索
ホームページデータベースOracleOracle がステートメント内で 1000 を超える値を使用できない問題を解決する例

この記事では、Oracle に関する関連知識を提供します。主に in メソッドを使用してレコードをクエリする方法を紹介します。in の後のパラメータの数が 1000 を超えた場合、何が起こりますか? エラー、JDBC がスローされます「java.sql.SQLException: ORA-01795: リスト内の式の最大数は 1000 です。」解決方法を見ていきましょうので、皆さんのお役に立てれば幸いです。

Oracle がステートメント内で 1000 を超える値を使用できない問題を解決する例

推奨チュートリアル: 「Oracle ビデオ チュートリアル

Oracle では、in メソッドを使用してクエリを実行します。レコード in 以降のパラメータの数が 1000 を超えると、エラーが発生し、JDBC は例外「java.sql.SQLException: ORA-01795: リスト内の式の最大数は 1000 です」をスローします。

私の解決策は次のとおりです:

1. 一時テーブルを作成します

ORACLE 一時テーブルには、セッション レベルの一時テーブルと、セッション レベルの一時テーブルの 2 つのタイプがあります。トランザクションレベルの一時テーブル。

1. ON COMMIT DELETE ROWS

これは一時テーブルのデフォルトのパラメータであり、一時テーブル内のデータがトランザクション プロセス (トランザクション) 中にのみ有効であることを意味します。トランザクションが送信されると (COMMIT)、一時テーブルの一時セグメントは自動的に切り捨てられます (TRUNCATE)。ただし、一時テーブルの構造とメタデータはユーザーのデータ ディクショナリに格納されたままになります。一時テーブルの役割が完了した場合は、一時テーブルを削除するのが最善です。そうしないと、データベースに一時テーブルの多くのテーブル構造とメタデータが保持されてしまいます。

2. ON COMMIT PRESERVE ROWS

これは、一時テーブルの内容が複数のトランザクションにわたって存在できることを意味します。ただし、セッションが終了すると、一時テーブルの一時セグメントはセッションの終了が破棄されると、一時テーブル内のデータも当然破棄されます。ただし、一時テーブルの構造とメタデータもユーザーのデータ ディクショナリに格納されます。一時テーブルの役割が完了した場合は、一時テーブルを削除するのが最善です。そうしないと、データベースに一時テーブルの多くのテーブル構造とメタデータが保持されてしまいます。

create global temporary table test_table 
(id varchar2(50), name varchar2(10)) 
on commit preserve rows; --创建临时表(当前会话生效)

--添加数据
insert into test_table VALUES('ID001', 'xgg');
insert into test_table VALUES('ID002', 'xgg2');

select * from test_table; --查询数据

TRUNCATE TABLE test_table; --清空临时表数据
DROP TABLE test_table; --删除临时表

一時テーブルを作成した後、in ステートメントでサブクエリを使用できるため、1000 件を超えるエラー レポートが発生する問題は発生しません。

select * from table_name where id in(select id from test_table);

2. in() または in を使用します。 ()

公式発表: 式のカンマ区切りリストには、1000 個以下の式を含めることができます。式のセットのカンマ区切りリストには、任意の数のセットを含めることができますが、各セットには以下を含めることができます。式は 1000 個以下です。

ここではタプルである oracle タプル (式のセットのカンマ区切りのリスト) が使用されています。構文は次のとおりです:

SELECT * FROM TABLE_NAME WHERE (1, COLUMN_NAME) IN 
((1, VALUE_1), 
(1, VALUE_2), 
...
...
...
...
(1, VALUE_1000),
(1, VALUE_1001));

たとえば、ユーザー テーブルのユーザー ID を使用してユーザー情報をクエリするには、次のように記述できます。

select * from user u where (1, u.id) in ((1, 'id001'),(1,'id002'),(1,'id003'))

上記のステートメントは、実際には次と同等です:

select * from user u where (1=1 and u.id='id001') or (1=1 and u.id='id002') or (1=1 and u.id='id003')

私たちのプロジェクトのほとんどは、MyBatis などの ORM フレームワークを使用します。MyBatis を使用できます。foreach はもともと次のように書かれていました:

where u.id in
<foreach>
	#{item}
</foreach>

現在は次のように変更されています:

where (1, u.id) in
<foreach>
	(1, #{item})
</foreach>

推奨チュートリアル: " Oracle ビデオ チュートリアル "

以上がOracle がステートメント内で 1000 を超える値を使用できない問題を解決する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Oracleの目的:ビジネスソリューションとデータ管理Oracleの目的:ビジネスソリューションとデータ管理Apr 13, 2025 am 12:02 AM

Oracleは、企業が製品とサービスを通じてデジタル変革とデータ管理を達成するのを支援します。 1)Oracleは、データベース管理システム、ERP、CRMシステムなどの包括的な製品ポートフォリオを提供し、企業がビジネスプロセスを自動化および最適化するのを支援します。 2)E-BusinessSuiteやFusionApplicationsなどのOracleのERPシステムは、エンドツーエンドのビジネスプロセスの自動化を実現し、効率を改善し、コストを削減しますが、実装とメンテナンスコストが高くなります。 3)OracLedatabaseは、高い並行性と高可用性データ処理を提供しますが、ライセンスコストが高くなります。 4)パフォーマンスの最適化とベストプラクティスには、インデックス作成と分割技術の合理的な使用、定期的なデータベースのメンテナンス、コーディング仕様のコンプライアンスが含まれます。

Oracle Libraryの故障を削除する方法Oracle Libraryの故障を削除する方法Apr 12, 2025 am 06:21 AM

Oracleがライブラリの構築に失敗した後、失敗したデータベースを削除する手順:SYSユーザー名を使用してターゲットインスタンスに接続します。ドロップデータベースを使用して、データベースを削除します。クエリv $データベースデータベースが削除されていることを確認します。

Oracle Loopでカーソルを作成する方法Oracle Loopでカーソルを作成する方法Apr 12, 2025 am 06:18 AM

Oracleでは、forループループは動的にカーソルを作成できます。手順は次のとおりです。1。カーソルタイプを定義します。 2。ループを作成します。 3.カーソルを動的に作成します。 4。カーソルを実行します。 5。カーソルを閉じます。例:カーソルをサイクルごとに作成して、上位10人の従業員の名前と給与を表示できます。

Oracleビューをエクスポートする方法Oracleビューをエクスポートする方法Apr 12, 2025 am 06:15 AM

Oracleビューは、Exputility:Oracleデータベースにログインしてエクスポートできます。 Expユーティリティを開始し、ビュー名とエクスポートディレクトリを指定します。ターゲットモード、ファイル形式、テーブルスペースなどのエクスポートパラメーターを入力します。エクスポートを開始します。 IMPDPユーティリティを使用してエクスポートを確認します。

Oracleデータベースを停止する方法Oracleデータベースを停止する方法Apr 12, 2025 am 06:12 AM

Oracleデータベースを停止するには、次の手順を実行します。1。データベースに接続します。 2。すぐにシャットダウンします。 3.シャットダウンは完全に中止します。

Oracleログがいっぱいの場合はどうすればよいですかOracleログがいっぱいの場合はどうすればよいですかApr 12, 2025 am 06:09 AM

Oracleログファイルがいっぱいになると、次のソリューションを採用できます。1)古いログファイルをクリーンします。 2)ログファイルサイズを増やします。 3)ログファイルグループを増やします。 4)自動ログ管理をセットアップします。 5)データベースを再発射化します。ソリューションを実装する前に、データの損失を防ぐためにデータベースをバックアップすることをお勧めします。

Oracle Dynamic SQLを作成する方法Oracle Dynamic SQLを作成する方法Apr 12, 2025 am 06:06 AM

SQLステートメントは、Oracleの動的SQLを使用して、ランタイム入力に基づいて作成および実行できます。手順には、次のものが含まれます。動的に生成されたSQLステートメントを保存するための空の文字列変数を準備します。 executeを即座に使用するか、ステートメントを準備して、動的なSQLステートメントをコンパイルおよび実行します。バインド変数を使用して、ユーザー入力またはその他の動的値を動的SQLに渡します。実行するか、実行するか、動的SQLステートメントを実行します。

Oracle Deadlockの場合はどうすればよいですかOracle Deadlockの場合はどうすればよいですかApr 12, 2025 am 06:03 AM

Oracle Deadlock Handling Guide:Deadlockを特定する:ログファイルの「Deadlock検出」エラーを確認します。デッドロック情報の表示:get_deadlockパッケージまたはv $ロックビューを使用して、デッドロックセッションとリソース情報を取得します。デッドロック図の分析:デッドロック図を生成して、ロック保持と順番状の状況を視覚化し、デッドロックの根本原因を決定します。ロールバックデッドロックセッション:キルセッションコマンドを使用してセッションをロールバックしますが、データの損失を引き起こす可能性があります。デッドロックサイクルを中断する:切断セッションコマンドを使用してセッションを切断し、保持されているロックを解放します。デッドロックの防止:クエリの最適化、楽観的なロックの使用、トランザクション管理の実施、および定期的に

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。