[firebase-br] RES: insert/update/delete usando argumento string.

Clayton Silva clayton.silva em powerlogic.com.br
Ter Set 21 10:57:00 -03 2010


Pessoal!

Vi uma luz no fim do túnel...

O que está acontecendo é o seguinte, tanto no select, update, insert..etc:

Meu campo na tabela (nr_serie_impressora) foi definido como varchar(20),
quando eu passo como parametro uma variável como no exemplo abaixo:

select cd_empresa from impressora where nr_serie_impressora = :ls_msg;

ele não encontra registro, isso pq passei na ls_msg os 20 caracteres... '01234567890123456789'

agora se eu der um update na base tirando o ultimo caracter e executar o mesmo comando, porém
com 19 caracteres.. ele irá encontrar o registro.

ls_msg = '0123456789012345678'

select cd_empresa from impressora where nr_serie_impressora = :ls_msg;

Ou seja, o que tá acontecendo é que não posso passar por argumento o total de caracteres que o 
campo possui.. ou seja, se o campo é varchar(20) não posso passar os 20 caracteres na variavel de parametro... se eu colocar fixo, encontra... como no exemplo abaixo:

select cd_empresa from impressora where nr_serie_impressora = '01234567890123456789';

mas com o parametro ele não aceita.. nem select, nem update e nem insert...

Tenho um campo id_situacao varchar(1)

quando faço o comando abaixo passando no parametro ls_msg = 'B', ele dá update, mas joga valor null no id_situacao:

update impressora set id_situacao = :ls_msg;

Se puderem me ajudar, agradeço muito.

Clayton Silva





----- Mensagem original -----
De: Jose Aparecido da Silva - Fasystem <listas em fasystem.com.br>
Para: 'FireBase' <lista em firebase.com.br>
Enviadas: Mon, 20 Sep 2010 22:54:16 -0300 (GMT-03:00)
Assunto: [firebase-br] RES:  insert/update/delete usando argumento string.


Provavelmente voce definiu o campo como char.
Esse tipo de campo guarda o conteúdo que você gravou e preenche o restante
do campo com espaços. Ex: 
Campo char(10) e você atribui o valor '1'. No campo ele será guardado assim:
'1         '. Entendeu? 
Provavelmente seja esse o problema.

[ ]'s
Jose Aparecido da Silva
Fasystem


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Clayton Silva
Enviada em: segunda-feira, 20 de setembro de 2010 18:54
Para: FireBase
Assunto: Re: [firebase-br] insert/update/delete usando argumento string.

Renan,

Primeiro quero agradecer a atenção...

mas o que você me disse, não deu certo...

este comando não é executado dentro de uma procedure e sim dentro de uma
função na
minha aplicação... e o que me deixa mais intrigado é que quando é um campo
numerico na 
base de dados... encontra o registro corretamente... por exemplo:

se executo isso: 
long ll_empresa
ll_empresa = 1
select * from impressora_fiscal where cd_empresa = :ll_empresa;

este comando... ele encontra na base, mas se o campo for string na base de
dados nao encontra.

Entendeu? Acredito que o problema seja a STRING, mas sinceramente, não sei o
que pode ser...
e nao estou conseguindo resolver...

Se puder me ajudar, agradeço..

Clayton Silva


----- Mensagem original -----
De: Renan Cruz de Almeida <renan.aju em terra.com.br>
Para: FireBase <lista em firebase.com.br>
Enviadas: Sat, 18 Sep 2010 09:56:24 -0300 (GMT-03:00)
Assunto: Re: [firebase-br] insert/update/delete usando argumento string.



Prezado, se lembro bem, a variável dentro da procedure não deveria ser 
referendada com os dois pontos ...

2- ls_msg = 'ABC123'

     select * from impressora_fiscal where nr_serie_impressora = :ls_msg;


Deveria ser :

2- ls_msg = 'ABC123'

     select * from impressora_fiscal where nr_serie_impressora = ls_msg;




E no caso os dois pontos você usará quando a variável for parâmetro da 
procedure ...

create procedure impressora(ls_msg varchar(6))
...
...
as
begin
  ...
  ....
  select * from impressora_fiscal where nr_serie_impressora = :ls_msg;
  ....
  ...
end



Espero ter ajudado.

[]'s
Renan


> Pessoal, boa tarde!
>
>
>
> Estou com o seguinte problema,
>
> Quando executo o comando 1 na minha função, ele retorna o registro
> encontrado,
>
> 1 - Select * from impressora_fiscal where nr_serie_impressora = 'ABC123';
>
>
>
> Porém se passo uma variavel ou estrutura (comando 2) é retornado do banco
> que não encontrou o registro, SQLCODE = 100 e SQLDBCODE = 3
>
> 2- ls_msg = 'ABC123'
>
>      select * from impressora_fiscal where nr_serie_impressora = :ls_msg;
>
>
>
> Se faço o comando 3, ele realiza update corretamente...
>
> 3 - Update impressora_fiscal set id_situacao = 'P'
>
>       where nr_serie_impressora = 'ABC123';
>
>
>
> Se faço o comando 4, ele realiza o update SQLCODE = 0 e SQLNROWS = 1,
porém
>
> na base ele muda o id_situacao para nulo...
>
> 4 - ls_msg = 'ABC123'
>
>       Update impressora_fiscal set id_situacao = :ls_msg
>
>       where nr_serie_impressora = 'ABC123';
>
>
>
> Ou seja, não consigo fazer update nem select utilizando estrutura ou uma
> variável que vem populada de outra função, desde que o campo na tabela
seja
> string....já que os comandos 5 e 6 funcionam corretamente...
>
> 5 - update impressora_cupom_fiscal set id_nota_fiscal = id_nota_fiscal +
> 1000;
>
> 6 - astr_impressora_cupom_fiscal.id_nota_fiscal = 1000
>
>       update impressora_cupom_fiscal set id_nota_fiscal = id_nota_fiscal -
> :astr_impressora_cupom_fiscal.id_nota_fiscal;
>
>
>
> Com isso detectei que o problema é com string... mas sinceramente... to
> doido aqui...
>
> nao sei o q pode ser...
>
>
>
> Se alguem puder me ajudar,,, desde já agradeço..
>
>
>
>
> Max Ferreira Silva
> Telefone: +55 (34) 3235-9233
>
> informa em informasistemas.com.br
> informaic em netsite.com.br
>
>
>
> ______________________________________________
> 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
>
>
>
----------------------------------------------------------------------------
-----------------------
> Texto inserido por Panda IS 2010:
>
>   Trata-se de uma mensagem não solicitada (SPAM), clique no link para
classificá-la novamente:
http://localhost:6083/Panda?ID=pav_5510&SPAM=true&path=C:\Documents%20and%20
Settings\renan\Configurações%20locais\Dados%20de%20aplicativos\Panda%20Secur
ity\Panda%20Internet%20Security%202010\AntiSpam
>
----------------------------------------------------------------------------
-----------------------
>
>



______________________________________________
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