[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