집 >데이터 베이스 >MySQL 튜토리얼 >테이블 생성 권한 없이 데이터베이스에 대해 많은 문자열을 효율적으로 일치시키는 방법은 무엇입니까?
테이블 생성 권한 없이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!