2011-04-30 2 views
1
sqlStmt = new StringBuffer(" ALTER SEQUENCE " ); 
        sqlStmt.append(ServerContext.getSchemaName()); 
        sqlStmt.append("SEQ_EDCD_TRACE_NUM"); 
        sqlStmt.append(" INCREMENT BY "); 
        sqlStmt.append(" ? "); 
pstmt.setLong(1, incval); 
pstmt.execute(); 
+0

'incval'의 유형은 무엇입니까? –

+2

이 SQL 명령이 무엇을하는지, 즉 NEXT_VAL에 대한 이후의 각 호출에 대한 순차의 증가 크기를 변경하고 (현재 값을 한 번 증가시키지 않음) 당신이 이해하기를 바랍니다. 사람들이이 성명서를 잘못 사용하고 몇 시간 안에 숫자가 없어지는 것을 여러 번 보았습니다. 뿐만 아니라 응용 프로그램이 중단되었습니다. 충분한 숫자 범위가 남아 있지 않았고 (이미 사용중인 숫자가 없음) – Codo

답변

4

ALTER SEQUENCE과 같은 DDL로 바인드 변수를 사용할 수 없습니다. 문자열에 incval을 연결해야합니다.

incvalint 또는 long 인 경우 SQL 주입의 위험이 없어야합니다.

+0

thnx 톤 루크 .. 그것은 문자열에 incval을 연결하여 작동했습니다. – smriti

관련 문제