[firebase-br] Ref. Executar SQL
Sandro Souza
escovadordebits em gmail.com
Sex Maio 29 15:40:57 -03 2009
Bom dia/tarde Omar.
Grande Omar, só é necessário colocar os dois pontos antes dos nomes das
variáveis nos comandos SQLs.
Vamos refazer essas duas stored procedures:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE FU_ABS(
WVAR DOUBLE PRECISION)
RETURNS (
R_ABS DOUBLE PRECISION)
AS
begin
/*
devolve o valor Absoluto de um número.
-123,47 ou 123,47 devolve sempre 123,47
*/
if (wvar is not null) then
begin
if (wvar < 0) then
r_abs = wvar * -1;
else
r_abs = :wvar;
end -- if
suspend;
end^
CREATE OR ALTER PROCEDURE FU_ALLTRIM(
> WVAR VARCHAR(8192))
> RETURNS (
> R_ALLTRIM VARCHAR(8192))
> AS
> DECLARE VARIABLE T SMALLINT;
> begin
> /*
> Devolve um string sem espaços
> */
> select r_Len from Fu_Len(:wvar) into :t;
-- Você já tentou: "t = FU_Len(wvar);" ?
>
> r_alltrim = '';
>
> while ((wvar is not null) and (t > 0)) do begin
> if (substring(wvar from 1 for 1) <> ' ') then
> r_alltrim = r_alltrim || substring(wvar from 1 for 1);
> wvar = substring(:wvar from 2 for 8191);
> t = t - 1;
> end -- while
suspend;
> end^
SET TERM ; ^
Só uma dica, essa stored procedure FU_ALLTRIM não está removendo os espaços
excedentes após o final da string.
Espero ter ajudado mais que atrapalhado. :D
2009/5/29 Omar Haddad <omarhaddadm em gmail.com>
> Salve srs(as).,
>
> Tenho um script com várias sentenças como a debaixo, tentei rodar no SQL
> monitor ou no Script Executive e resultou em erro.
>
>
>
>
>
> CREATE PROCEDURE FU_ABS(
> WVAR DOUBLE PRECISION)
> RETURNS (
> R_ABS DOUBLE PRECISION)
> AS
> begin
> /*
> devolve o valor Absoluto de um número.
> -123,47 ou 123,47 devolve sempre 123,47
> */
> if (:wvar is not null) then begin
> if (:wvar < 0.0000) then
> r_abs = :wvar * -1;
> else
> r_abs = :wvar;
> end
>
> suspend;
> end
>
> --===================================
> CREATE PROCEDURE FU_ALLTRIM(
> WVAR VARCHAR(8192))
> RETURNS (
> R_ALLTRIM VARCHAR(8192))
> AS
> DECLARE VARIABLE T SMALLINT;
> begin
> /*
> Devolve um string sem espaços
> */
> select r_Len from Fu_Len(:wvar) into :t;
> r_alltrim = '';
>
> while ((:wvar is not null) and (:t > 0)) do begin
> if (substring(:wvar from 1 for 1) <> ' ') then
> r_alltrim = :r_alltrim || substring(:wvar from 1 for 1);
>
> wvar = substring(:wvar from 2 for 8191);
> t = :t - 1;
> end
>
> suspend;
> end
>
>
> --
> Att.
> Omar Marques Haddad
> Analista de Sistemas Sênior
> ______________________________________________
> 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