Galera,
Gostaria de saber como eu faço (de maneira bem simples) passar um array como parametro para um prepared statement.
Tudo q achei no google é muito complicado !!!
Se alguem puder ajudar …
muito obrigado
Guilherme
Galera,
Gostaria de saber como eu faço (de maneira bem simples) passar um array como parametro para um prepared statement.
Tudo q achei no google é muito complicado !!!
Se alguem puder ajudar …
muito obrigado
Guilherme
De modo geral, é complicado mesmo, porque SQL e arrays não se misturam muito bem.
EHEHEHEEHHE
Okay…
Se puderem ajudar com a maneira complicada, ficarei grato … o importante será resolver o problema … !!
O que importa agora eh resolver … ja q de maneira facil nao dá entao vamos para a dificil ??
alguem tem alguma ideia para resolver o problema ???
OBRIGADO!
select A.ASSO, D.NAME, C.PATH, A.DOC_ID, A.REVISION, B.DOC_ID, B.REVISION
from d_base_mod A, d_base_mod B, ic C, type D
where A.DOC_ID in (?) and
B.DOC_ID in (?) and
A.DOC_ID < B.DOC_ID and
A.ASSO = B.ASSO and
C.ASSO = A.ASSO and
D.TYPE_ID = C.TYPE_ID
Efetuar comparacoes de uma ? com o outro ? … eles serão meu array !
A resposta do cara é para o MySQL, mas a solução dele serve para qualquer banco.
Okay … vou tentar !!
manda a solução quando conseguir…essa realmente é nova…
Entao cara …
A nossa ideia agora eh fazer usando PL/SQL … pq todas as solucoes q encontrei no google … usa um cara chamado OraclePreparedStatement … ou seja eh muito limitado pq logo logo usaremos Hibernate entao … pelo menos o PL/SQL acredito q vai durar um poko mais …
Mas em todo caso se eu conseguir com Java pode dexa q eu post aki !!
FLW AEW!
Ué, não é só enviar os valores separados por vírgula?
Ou eu entendi errado?
Bom, de qualquer modo, tem como enviar um array para uma procedure Oracle. Lá na procedure você declara um tipo "as table of".
Segue exemplo no Oracle:
Criação das estruturas no banco:create type typ_proc_solic as object (
dr_tabela varchar2(15),
dr_procedimento varchar2(20),
dm_procedimento varchar2(70),
qt_autorizada number(3));
create type tbl_proc_solic as table of typ_proc_solic;
procedure p_teste(p_procedimentos in out tbl_proc_solic);
for i in p_procedimentos.first..p_procedimentos.last loop
...
...
...
end loop;
Object[][] procedimentos = new Object[100][4];
...
//popula objeto procedimentos
procedimentos[i][0] = "blabla";
procedimentos[i][1] = "blabla";
procedimentos[i][2] = "blabla";
procedimentos[i][3] = 2333;
....
OracleCallableStatement csAutorizacao = (OracleCallableStatement) conexao.prepareCall("call p_teste(?)");
ArrayDescriptor arDescriptor = new ArrayDescriptor(this.TYPE_PROC_NAME, conexao);
ARRAY arProcedimentos = new ARRAY(arDescriptor, conexao, procedimentos);
csAutorizacao.setARRAY(<indice>, arProcedimentos);
csAutorizacao.execute();
julianostr
eu fiz separando por virgula…no lugar do ? eu coloquei a lista de valores que eu preciso como uma String[] ai eu fiz o seguinte :
StringBuffer blBuffer = new StringBuffer();
for(int i = 0; i < bls.length; i++){
blBuffer.append(bls[i]);
if(i < bls.length - 1){
blBuffer.append(",");
}
}
String blString = blBuffer.toString();
e a variavel blString é a minha lista !!!
funcionou legal !!!
VALEU PESSOAL !!!