Select for no Firebird
14/01/2020
0
Desenvolvi o seguinte proc
SET TERM ^ ;
CREATE PROCEDURE OBTER_CLIENTES_FACCAO(
P_CODCLI VARCHAR(10) CHARACTER SET NONE)
RETURNS(
CLIENTES_FACCAO VARCHAR(10) CHARACTER SET NONE)
AS
DECLARE VARIABLE DESC_ETQ VARCHAR(50);
DECLARE VARIABLE texto_etiquetas VARCHAR(2000);
BEGIN
/* Procedure body */
FOR select epr.DESCRICAO
from ETQ_CLIENTE_001 etq
inner join FAC_MAQUINAS_001 Fma on (ETq.CODCLI = fma.CODCLI)
inner join ETQ_PROD_001 epr on (epr.CODIGO = ETQ.CODETQ)
where fma.CODCLI = :p_CODCLI
INTO DESC_ETQ
DO
BEGIN
TEXTO_ETIQUETAS = TEXTO_ETIQUETAS || DESC_ETQ || ', ';
SUSPEND;
END
CLIENTES_FACCAO = TEXTO_ETIQUETAS;
END^
SET TERM ; ^
Ele rodou sem erros, mas da erro ao executar dizendo que há um problema nos parametros de entrada já.
André Fernandes
Post mais votado
15/01/2020
https://andersonworkinfo.wordpress.com/2014/09/15/duvida-filtrar-palavras-em-uma-lista/
vê se isso te ajuda, coloca só o inner join para buscar as tabelas juntas como você está fazendo.
OBS: percebi que no seu código acima você declara um PARAMETRO mas não passa para a query em momento nenhum.
Essa aqui
:p_CODCLI
Em algum momento você não deveria passar a informação ao parametro?
Parameters.ParamByName('p_CODCLI').value := Informação;
Da uma olhada no link lá e vê se te ajuda.
Espero ter ajudado.
Anderson Gonçalves
Mais Posts
15/01/2020
Anderson Gonçalves
https://andersonworkinfo.wordpress.com/2014/01/29/trabalhando-com-checklistbox-delphi/
15/01/2020
André Fernandes
Então, eu não entendi muito bem a questao do inner que vc falou. Já estou usando.
E o parâmetro eu estou usando na cláusula WHERE do sql:
where fma.CODCLI = :p_CODCLI
como acima.
15/01/2020
Anderson Gonçalves
Então, eu não entendi muito bem a questao do inner que vc falou. Já estou usando.
E o parâmetro eu estou usando na cláusula WHERE do sql:
where fma.CODCLI = :p_CODCLI
como acima.
Assim boy:
Temos as tabelas
Tabela de Cliente (tbcliente)
clicodigo int not null -pk
clinome varchar(50) not null
Tabela de Documentos (tbdocumento)
doccodigo int not null - pk
docdescricao varchar(50) not null
tabela de ligação (tbcliente_documento)
clidoccodigo int not null - pk
clicodigo int not null - fk
doccodigo int not null - fk
Levando em consideração que você tem essas tabelas o INNER JOIN vai trazer dados relacionados entre elas quando você selecionar dessa maneira.
Obs: Usando Componente ADO (ADOQuery);
With ADOQuery1 do
begin
close;
sql.clear;
sql.add('select * from tbcliente_documento clidoc0');
sql.add('inner join tbcliente cli0 on cli0.clicodigo = clidoc0.clicodigo');
sql.add('inner join tbdocumento doc0 on doc0.doccodigo = clidoc0.doccodigo');
// aqui vem o seu comparativo.
sql.add('where cli0.clicodigo = :parametro');
parameters.parambyname('parametro').value := edit_codigo_cliente.text;
open;
end;
Vai que é tua tafarel, adapta para a tua situação.
Espero ter ajudado novamente.
Abraço.
OBS: se der BO me chama no skype: anderson@case13.com.br
Clique aqui para fazer login e interagir na Comunidade :)