在Oracle資料庫中高效匹配大量字串,無需表創建權限
在Oracle SQL Developer中,您可能需要將大量字串與資料庫進行匹配,但又缺乏建立或編輯表的必要權限。這種情況需要採用替代方法來有效率地執行匹配過程。
利用集合
一種解決方案是使用集合,它允許您建立臨時容器來儲存資料值。 Oracle提供了兩種類型的集合:
使用集合,您可以將您的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中文網其他相關文章!