ホームページ >データベース >mysql チュートリアル >テーブル作成権限なしで多くの文字列をデータベースと効率的に照合するにはどうすればよいですか?
テーブル作成権限なしで Oracle データベース内の多数の文字列を効率的に照合します
Oracle SQL Developerでは、多数の文字列をデータベースと照合する必要がある場合がありますが、テーブルの作成または編集に必要な権限がありません。この状況では、照合プロセスを効率的に実行するための代替方法が必要になります。
コレクションを使用する
解決策の 1 つは、データ値を保存する一時コンテナを作成できるコレクションを使用することです。 Oracle は 2 種類のコレクションを提供します:
コレクションを使用すると、ID をコンテナーにロードし、データベース テーブルで結合操作を実行できます。 Oracle の名前付きコレクションを使用した例を次に示します:
<code class="language-sql">VARIABLE cursor REFCURSOR; DECLARE your_collection SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); BEGIN your_collection.EXTEND( 10000 ); -- 填充集合。 FOR i IN 1 .. 10000 LOOP your_collection(i) := DBMS_RANDOM.STRING( 'x', 20 ); END LOOP; OPEN :cursor FOR SELECT t.* FROM your_table t INNER JOIN TABLE( your_collection ) c ON t.id = c.COLUMN_VALUE; END; / PRINT cursor;</code>
Java メソッド
Java 開発スキルがある場合は、Java を使用して ID を配列にロードし、結合操作を実行するプリペアド ステートメントにパラメータとして渡すこともできます。
<code class="language-java">import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import oracle.jdbc.OraclePreparedStatement; import oracle.sql.ARRAY; import oracle.sql.ArrayDescriptor; public class TestDatabase2 { public static void main(String args[]){ try{ Class.forName("oracle.jdbc.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","username","password"); String[] ids = { "1", "2", "3" }; ArrayDescriptor des = ArrayDescriptor.createDescriptor("SYS.ODCIVARCHAR2LIST", con); PreparedStatement st = con.prepareStatement("SELECT t.* FROM your_table t INNER JOIN TABLE( ? ) c ON t.id = c.COLUMN_VALUE"); // 将数组传递给过程 - ((OraclePreparedStatement) st).setARRAYAtName( "your_collection", new ARRAY( des, con, ids ) ); ResultSet cursor = st.executeQuery(); while ( cursor.next() ) { int id = cursor.getInt(1); double column1 = cursor.getDouble(2); double column2 = cursor.getDouble(3); System.out.println( String.format( "Id: %5d", id ) ); System.out.println( String.format( " Column1: %s", column1 ) ); System.out.println( String.format( " Column2: %s", column2 ) ); } } catch(ClassNotFoundException | SQLException e) { System.out.println(e); } } }</code>
コレクションまたは Java プログラミングを利用すると、テーブルの作成や編集権限を必要とせずに、大量の文字列をデータベース テーブルに効率的に照合できます。
以上がテーブル作成権限なしで多くの文字列をデータベースと効率的に照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。