Fórum Função no FireBird/sql #589715
12/12/2017
0
Preciso passar nos parâmetros um valor de um campo ID empresas e retornar o nome da empresa.
Exemplo:
IDEMPRESA
1
2
3
4
NOME EMPRESA
'GGGGGG'
'HHHHHH'
'LLLLLL'
Para isso eu fiz um decode, mas quero colocao como função e chamá-la para que o código nao fique feio, além de poder usá-la outras vezes.
Obrigada!
Samila
Curtir tópico
+ 0Post mais votado
12/12/2017
você poderia utilizara uma Stored Procedure, eu fiz um exemplo e você pode adaptar ao seu código:
SET TERM ^ ;
create or alter procedure STP_EMPRESA (
PI_IDEMPRESA integer)
returns (
PO_IDEMPRESA integer,
PO_NOME_EMPRESA varchar(50))
as
declare variable PV_IDEMPRESA integer;
declare variable PV_NOME_EMPRESA varchar(50);
begin
for select
IDEMPRESA,
NOME_EMPRESA
from
TAB_EMPRESA -- TABELA ONDE VAI BUSCAR A EMPRESA
where
IDEMPRESA = :PI_IDEMPRESA
into
:PV_IDEMPRESA,
:PV_NOME_EMPRESA
do
begin
PO_IDEMPRESA = :PV_IDEMPRESA;
PO_NOME_EMPRESA = :PV_NOME_EMPRESA;
suspend;
end
end^
SET TERM ; ^
Johnny
Gostei + 4
Mais Posts
12/12/2017
Johnny
você poderia utilizara uma Stored Procedure, eu fiz um exemplo e você pode adaptar ao seu código:
SET TERM ^ ;
create or alter procedure STP_EMPRESA (
PI_IDEMPRESA integer)
returns (
PO_IDEMPRESA integer,
PO_NOME_EMPRESA varchar(50))
as
declare variable PV_IDEMPRESA integer;
declare variable PV_NOME_EMPRESA varchar(50);
begin
for select
IDEMPRESA,
NOME_EMPRESA
from
TAB_EMPRESA -- TABELA ONDE VAI BUSCAR A EMPRESA
where
IDEMPRESA = :PI_IDEMPRESA
into
:PV_IDEMPRESA,
:PV_NOME_EMPRESA
do
begin
PO_IDEMPRESA = :PV_IDEMPRESA;
PO_NOME_EMPRESA = :PV_NOME_EMPRESA;
suspend;
end
end^
SET TERM ; ^
PI = Parâmetros de entrada;
PV = Variáveis;
PO = Parâmetros de saída.
Gostei + 0
12/12/2017
Samila
mas preciso que esses dados sejam apresentados no select, posso chamar a procedure no select?ou somente no from?
Gostei + 0
12/12/2017
Johnny
você pode fazer um join com a procedure assim como nesse exemplo abaixo
select
PO_COD_CATEGORIA,
PO_DES_CATEGORIA,
sum(PO_TOTAL_MES_ANT),
sum(PO_VAL_ANO_ANT),
sum(PO_TOTAL_ATINGIDO),
sum(PO_VAL_META),
TIPO_CATEGORIA
from
STP_META_SUBCATEGORIA('01.10.2017', '31.10.2017', '01.11.2017', '30.11.2017', '01.11.2016', '30.11.2016')
inner join
TAB_CATEGORIA CAT on STP_META_SUBCATEGORIA.PO_COD_CATEGORIA = CAT.COD_CATEGORIA
group by
PO_COD_CATEGORIA, PO_DES_CATEGORIA, TIPO_CATEGORIA
Gostei + 0
10/01/2018
Emerson Nascimento
SET TERM ^ ;
create or alter function NmEmpresa(nID integer) returns varchar(50)
as -- retorna a data do primeiro dia do mes
declare variable NOME_EMPRESA varchar(50);
begin
select nome from empresas where id = :nID into :NOME_EMPRESA;
return :NOME_EMPRESA;
end^
SET TERM ; ^
e você poderá utilizar no select da query.
select NmEmpresa( nf.ID ), *
from notafiscal nf
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)