Oracle - ALTER SESSION SET NLS_DATE_FORMAT antes de executar procedure

Olá Pessoal

Segundo a solução que vi aqui
http://www.guj.com.br/java/110712-ora-01843-not-a-valid-month-resolvido

basta setar o locale antes de fazer a conexão desta forma

Locale.setDefault(new Locale("en", "US"));  

No entanto, esta solução não serve para mim pois só preciso alterar o formato da data antes de chamar uma certa stored procedure. Nas demais consultas ao banco, o locale deve ser o padrão que já está setado.

Tenho o código abaixo que é suspeito de estar errado. Foi desativado e vários bugs cessaram imediatamente.

Gostaria de saber se alguém nota algo errado e se teria uma solução alternativa.

	public static String execute(String dbDriver, String dbUrl, etc etc ) {
		Connection conn = null;
		CallableStatement stmt = null;
		String procedure = "usuario.SP_INSERT";
		String retorno="0";
		
		try {
			StringBuffer sql = new StringBuffer();
			conn = getConnection(dbDriver, dbUrl, dbUsrName, dbUsrPwd);
			
			String sqlSession = "ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'";
			PreparedStatement cs1 = conn.prepareStatement(sqlSession);
            cs1.execute();
            cs1.close();
            
			sql.append("{call " + procedure + " (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");			
			stmt = conn.prepareCall(sql.toString());
			stmt.setString(1, etcetcetc);
			stmt.setString(2, blablabla);
			stmt.setString(3 .....
			stmt.execute();
			stmt.close();			
		}
		catch (Exception e) {
			logger.error("Exception: " + e.toString(), e);
			retorno = "2";
		} 
		finally {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return retorno;
	}

Neste caso você está usando 2 conexões diferentes, tem usar a mesma para dar o alter e fazer a chamada da procedure
Não pode por dentro da procedure?

Não posso alterar a SP. Pelo que entendi, o alter session está entrando em vigor na sessão pois só uma conexão é feita.

Ela só altera a session da conexão que executou-a. Se você abre uma outra conexão não vai ter alteração
Eu não testei, mas se colocar junto da string que está o [n] call[/n] pode ser q funciona

Ah ta, entendi o que você quis dizer. Mas como escrevi lá no início

Então é isso mesmo que desejo, quando for conectar em outros pontos do código não deve alterar o formato de data/hora.

Ai depois que você chamar a procedure pode voltar pro default via alter session msm ou se abrir uma nova conexão o format está o default.

[quote=furutani]Ai depois que você chamar a procedure pode voltar pro default via alter session msm ou se abrir uma nova conexão o format estará o default.
[/quote]

isso mesmo, não tem problema quanto a isto.