테이블 생성 권한 없이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!