SP não reconhecida

Firebird

19/06/2009

Boa tarde pessoal, to com um probleminha aqui no firebird, versão 2.0.
Eu fiz uma SP pra ´ajeitar´ o formato das strings do banco, só que quando chamo ela pra fazer a view da erro.
Esse eh o codigo da SP
CREATE OR ALTER PROCEDURE LENGTH_TEXTO (
    tam_string integer,
    texto varchar(255))
returns (
    texto_formatado varchar(255))
as
declare variable diferenca integer;
declare variable qtd_char integer;
begin
  qtd_char = fblength(texto);
  diferenca = tam_string - qtd_char;
  texto_formatado = texto;
  while (diferenca > 0) do
  begin
    texto_formatado = texto_formatado || ´ ´;
    diferenca = diferenca - 1;
  end
  texto_formatado = texto_formatado; --|| texto;
  suspend;
end

E esse é o código da view:
CREATE VIEW Empresa(
    empresa_nome)
AS
select
    length_texto(50, empresa_nome) from TEmpresas;

esse é o erro que dá:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
LENGTH_TEXTO.

Se alguém puder me ajudar, to realmente precisando.
Muito obrigado desde já. Abraço


Amaury Sette

Amaury Sette

Curtidas 0

Respostas

Webjoel

Webjoel

19/06/2009

Olá!

Creio que o problema esteja acontendo na função: ´fblength´, ela não deve existir na sua base, o firebird tem uma função nativa para retornar o tamanhop de uma string, é: ´char_length´.

Faça essa modificação e tente novamente.

Ah, e já existe uma função que faz exatamente isso que a função que você criou faz, e ainda por cima faz ao inverso e também deixa você colocar qual caracter você deseja completar a string. É só você colocar a UDF: ´FreeAdhocUDF´, e chamar a função: ´F_PADLEFT´.

Boa sorte!


GOSTEI 0
Amaury Sette

Amaury Sette

19/06/2009

Joel, a fblenght é uma UDF que ta na base sim, mas eu resolvi o problema, fiz tudo no codigo do sistema mesmo, valeu pela força. Agora sabendo dessa função vou fazer tudo no banco novamente, pois ganho em desempenho do sistema.
Valeu a força. Forte abraço.


GOSTEI 0
POSTAR