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

robson robsonfg em terra.com.br
Seg Maio 12 14:25:04 -03 2008


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 
 




Mais detalhes sobre a lista de discussão lista