[firebase-br] Res: Re: Res: Dúvida com Stored Procedure no FireBird

robson robsonfg em terra.com.br
Seg Maio 12 15:01:41 -03 2008


tente assim: 
 
seucomponente.sql.params[indice].asstring:=quotedstr('A')+','+quotedstr('B')
 
 
e assim por diante 
 
-------Mensagem original------- 
 
De: José Aparecido Pereira 
Data: 12/05/2008 14:54:41 
Para: FireBase 
Assunto: Re: [firebase-br]Res: Dúvida com Stored Procedure no FireBird 
 
Olá, obrigado pelo retorno, 
 
Já tentei fazer isto que você falou, passando os valores do parâmetro de 
entrada com ' ', ex. :TIPOENT = 'B','D' 
 
Mas, fazendo um teste pelo IBOConsole, dá o seguinte erro: 
 
 
ISC ERROR CODE:335544569 
 
ISC ERROR MESSAGE: 
Dynamic SQL Error 
SQL error code = -104 
Token unknown - line 1, char 199 
B 
 
 
 
Em 12/05/08, robson <robsonfg em terra.com.br> escreveu: 
> 
> para que funcione os caracteres passados devem estar no formato que o 
> firebird utiliza, ou seja, cada um sendo um caracter assim seu parametro 
> tipo enter tem que ser passado assim 
> 
> tipoent='A','B' 
> 
> ou seja, vc tem que colocar cada opção entre aspas 
> 
> -------Mensagem original------- 
> 
> De: José Aparecido PereiraData: 05/12/08 14:06:49 
> Para: lista em firebase.com.br 
> Assunto: [firebase-br] Dúvida com Stored Procedure no FireBird 
> 
> Olá pessoal, 
> 
> Tenho um problema pra resolver com uma Stored Procedure, já tentei de 
> algumas formas, mas até então ainda não deu certo. 
> 
> O problema é o seguinte: Preciso usar o Filtro usando ( IN ) na cláusula 
> WHERE, para retornar uma faixa de registros, quando utilizo somente um 
> caracter, funciona normal, quando acrescento mais de um, não retorna nada.

> 
> Ex.: O Parâmetro TIPOENT = B, retorna normal o período; 
> O Parâmetro TIPOENT = B,D não retorna nenhum registro. 
> 
> O Parâmetro foi testado com o Tipo CHAR e VARCHAR ( input ). 
> 
> 
> Código SQL usando a sintax FOR SELECT; 
> ... 
> FOR SELECT DISTINCT( EXTRACT( YEAR FROM M.MOVDATAVENC ) ), 
> ( EXTRACT( MONTH FROM M.MOVDATAVENC ) ) 
> FROM TMMOVIMENTO M 
> WHERE M.MOVDATAVENC BETWEEN :DATAINI AND :DATAFIM 
> AND M.MOVTIPODOAC IN( :TIPOENT ) 
> INTO :Ano, :Mes DO 
> BEGIN 
> ... 
> 
> Código SQL usando a sinxtax FOR EXECUTE STATEMENT; 
> ... 
> sSQL = 'SELECT DISTINCT( EXTRACT( YEAR FROM M.MOVDATAVENC ) ), ( EXTRACT( 
> MONTH FROM M.MOVDATAVENC ) ) '; 
> sSQL = sSQL || 'FROM TMMOVIMENTO M '; 
> sSQL = sSQL || 'WHERE M.MOVDATAVENC BETWEEN ''' || :DATAINI || '''' || ' 
> AND ''' || :DATAINI || ''''; 
> sSQL = sSQL || 'AND M.MOVTIPODOAC IN( ''' || :TIPOENT || '''' || ' )'; 
> 
> FOR EXECUTE STATEMENT 
> sSQL 
> INTO :Ano, :Mes DO 
> BEGIN 
> ... 
> 
> Esta segunda Opção seria mais interessante no caso que estou utilizando, 
> porque tenho mais poder para interagir com a query, em outros critérios a 
> serem feitos... 
> A pergunta é: 
> Como ficaria a sintax do parâmetro com tipo caracter, utilizando o Filtro 
> ( 
> IN ) na cláusula WHERE? 
> 
> Obs.: Estou utilizando o FireBird 1.5 
> 
> Obrigado, 
> 
> José Aparecido 
> ______________________________________________ 
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www 
> firebase.com.br/fb/artigo.php?id=1107 
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa 
> 
> 
> ______________________________________________ 
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107 
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa 
> 
______________________________________________ 
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www
firebase.com.br/fb/artigo.php?id=1107 
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 
 




Mais detalhes sobre a lista de discussão lista