Socorro! java.sql.SQLException: ORA-01006: bind variable does not exist

Olá pessoal, to tendo problemas para executar uma Stored Procedure e já estou fikando maluko… Por favor me ajudem… Naum sei pq esta dando este erro (ORA-01006: bind variable does not exist) … Assumo que não sou muito experinete em java e o problema pode ser bem simples de resolver, mas eu naum sei… peço desculpas pelo incomodo… por favor me ajudem … :roll:

    		/*---Inicio - Executar SPR ---------------------------------------------*/

    		try {
    			  String strSTMT = "begin PG_SiafemNet_EJB.PR_incluir_ne_inicial(:1,:2,:3,:4,:5,:6,:8,:9," +
    			  	":10,:11,:12,:13,:14,:15,:16,:17,:18,:19,"+
    				":20,:21,:22,:23,:24,:25,:26,:27,:28,:29,"+
    				":30,:31,:32,:33,:34,:35,:36,:37,:38,:39,"+
    				":40,:41,:42,:43,:44,:45,:46,:47,:48,:49,"+
    				":50,:51,:52,:53,:54); end;";
    			  
    	   	  OracleCallableStatement cstmt = (OracleCallableStatement) conn.prepareCall(strSTMT);

             

    	   	  System.out.println("vai setar!");
    	   	 
    	   	 cstmt.setString(1,"09out06");
    	   	 cstmt.setString(2,"200102");//"v_unidage_gestora"
    	   	 cstmt.setString(3,"00001");//"v_gestao"
    	   	 cstmt.setString(4,"61695227000193");//"v_cgc_credor"
    	   	 cstmt.setString(5,null);//"v_gestao_credor"
    	   	 cstmt.setString(6,"400091");//"v_evento"
    	   	 cstmt.setString(7,"200102");//"v_ptres"
    	   	 cstmt.setString(8,null);//"v_uo"
    	   	 cstmt.setString(9,null);//"v_pt"
    	   	 cstmt.setString(10,"001001001");//"v_fonte"
    	   	 cstmt.setString(11,"33905011");//"v_natureza_despesa"
    	   	 cstmt.setString(12,"200010");//"v_ugo"
    	   	 cstmt.setString(13,"0100");//"v_cod_municipio"
    	   	 cstmt.setString(14,null);//"v_acordo"
    	   	 cstmt.setString(15,"1");//"v_cod_modalidade"
    	   	 cstmt.setString(16,"6");//"v_tipo_licitacao"
    	   	 cstmt.setString(17,"xxx");//"v_ref_legal"
    	   	 cstmt.setString(18,"1");//"v_origem_material"
    	   	 cstmt.setString(19,"VD0123/06 6");//"v_processo"
    	   	 cstmt.setString(20,"300");//"v_valor"
    	   	 cstmt.setString(21,"xxx");//"v_local_entrega"
    	   	 cstmt.setString(22,"30OUT2006");//"v_data_entrega"
    	   	 cstmt.setString(23,"9");//"v_tipo_empenho"
    	   	 cstmt.setString(24,null);//"v_ident_obra"
    	   	 cstmt.setString(25,"2006NE01689");//"v_numero_ne"
    	   	 cstmt.setString(26,"M");//"v_tipo_geracao" // Sempre "M"
     	   	// cstmt.setDate(27, new java.sql.Date(System.currentTimeMillis()) );//"v_data_processamento"
    	   	 cstmt.setString(27,"10");//"v_mes01"
    	   	 cstmt.setString(28,null);//
    	   	 cstmt.setString(29,null);//
    	   	 cstmt.setString(30,null);//
    	   	 cstmt.setString(31,null);//
    	   	 cstmt.setString(32,null);//
    	   	 cstmt.setString(33,null);//
    	   	 cstmt.setString(34,null);//
    	   	 cstmt.setString(35,null);//
    	   	 cstmt.setString(36,null);//
    	   	 cstmt.setString(37,null);//
    	   	 cstmt.setString(38,null);//
    	   	 cstmt.setString(39,null);	//"v_mes13"
    	   	 cstmt.setString(40,"300");//"v_valor01"
    	   	 cstmt.setString(41,null);
    	   	 cstmt.setString(42,null);
    	   	 cstmt.setString(43,null);
    	   	 cstmt.setString(44,null);
    	   	 cstmt.setString(45,null);
    	   	 cstmt.setString(46,null);
    	   	 cstmt.setString(47,null);
    	   	 cstmt.setString(48,null);
    	   	 cstmt.setString(49,null);
    	   	 cstmt.setString(50,null);
    	   	 cstmt.setString(51,null);
    	   	 cstmt.setString(52,null);//"v_valor13"
                	   	  System.out.println("fim setar ins!");
              
    	   	  cstmt.registerOutParameter (53, OracleTypes.NUMBER);
    	   	  cstmt.registerOutParameter (54, java.sql.Types.VARCHAR);


    	   	  cstmt.execute ();

    	   	  strSPMsgErro = ((OracleCallableStatement)cstmt).getString (54);	
    	   	  System.out.println("strSPMsgErro:"+strSPMsgErro);
    	   	  
   	     }catch(Exception e){
    	   	  e.printStackTrace();
    	   	  System.out.println("Exception");
    	   	//oVo.setOutErro("Erro ao executar Stored Procedure:" + strSprNome );
    			//oVo.setOutStatus(-900);
    	     }	
    		
    		/*---Fim - Executar SPR ------------------------------------------------*/
    	     
 :arrow:

erro:

java.sql.SQLException: ORA-01006: bind variable does not exist

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1986)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1144)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2152)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2035)

Exception
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2876)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:685)
at com.attachmate.model.bo.TesteBD7.main(TesteBD7.java:144)

Documentação da StrdProcedure:

  PROCEDURE PR_incluir_ne_inicial( v_data_emissao       IN VARCHAR2,
                           v_unidage_gestora    IN VARCHAR2,
                           v_gestao             IN VARCHAR2,
                           v_cgc_credor         IN VARCHAR2,
                           v_gestao_credor      IN VARCHAR2,
                           v_evento             IN VARCHAR2,
                           v_ptres              IN VARCHAR2,
                           v_uo                 IN VARCHAR2,
                           v_pt                 IN VARCHAR2,
                           v_fonte              IN VARCHAR2,
                           v_natureza_despesa   IN VARCHAR2,
                           v_ugo                IN VARCHAR2,
                           v_cod_municipio      IN VARCHAR2,
                           v_acordo             IN VARCHAR2,
                           v_cod_modalidade     IN VARCHAR2,
                           v_tipo_licitacao     IN VARCHAR2,
                           v_ref_legal          IN VARCHAR2,
                           v_origem_material    IN VARCHAR2,
                           v_processo           IN VARCHAR2,
                           v_valor              IN VARCHAR2,
                           v_local_entrega      IN VARCHAR2,
                           v_data_entrega       IN VARCHAR2,
                           v_tipo_empenho       IN VARCHAR2,
                           v_ident_obra         IN VARCHAR2,
                           v_numero_ne          IN VARCHAR2,
                           v_tipo_geracao       IN VARCHAR2,
                        
                           v_mes01              IN VARCHAR2,
                           v_mes02              IN VARCHAR2,
                           v_mes03              IN VARCHAR2,
                           v_mes04              IN VARCHAR2,
                           v_mes05              IN VARCHAR2,
                           v_mes06              IN VARCHAR2,
                           v_mes07              IN VARCHAR2,
                           v_mes08              IN VARCHAR2,
                           v_mes09              IN VARCHAR2,
                           v_mes10              IN VARCHAR2,
                           v_mes11              IN VARCHAR2,
                           v_mes12              IN VARCHAR2,
                           v_valor01            IN VARCHAR2,
                           v_valor02            IN VARCHAR2,
                           v_valor03            IN VARCHAR2,
                           v_valor04            IN VARCHAR2,
                           v_valor05            IN VARCHAR2,
                           v_valor06            IN VARCHAR2,
                           v_valor07            IN VARCHAR2,
                           v_valor08            IN VARCHAR2,
                           v_valor09            IN VARCHAR2,
                           v_valor10            IN VARCHAR2,
                           v_valor11            IN VARCHAR2,
                           v_valor12            IN VARCHAR2,
                           v_id                 OUT NUMBER,
                           v_ds_msg_erro        OUT VARCHAR2);

ja consegui pessoal. Mesmo assim sou grato aos usuarios do Guj que ja me ajudaram em outras situaçoes.

tava faltando colocar o :7 na String …

Isso eh codigo que se apresente!?

Trate de dar nome a essas variaveis, e nao use OracleCallableStatement!

CV, fiquei curioso com sua recomendação. Por que não utilizar OracleCallableStatement?

Utilizo o iBatis com Oracle e quando recebo uma exceção esta classe é apresentada na pilha do stack trace.

O que há de errado com OracleCallableStatement?

[]'s

Daniel Augusto