Re: [firebase-br] procedure simples dando dor de cabeça]

Hernando mecanvpcusto em mecan.com.br
Ter Jan 18 15:06:39 -03 2005


mudei pra seguinte forma,  mas o ibexpert me dá somente o resultado de 
quantidade * peso, ou seja varios valores com essa multiplicação, mas eu 
quero a somatoria dessas miltiplicações.deu pra entender?fb1.0



SELECT SUM (A.quantidade * B.peso) as pesotot
FROM COMPRODUTO
A left JOIN componente b ON (B.cdcomponente=A.cdcomponente)
WHERE IDPRODUTO=10003
Group By A.CDCOMPONENTE, A.QUANTIDADE, B.PESO




não deu certo deu a seguinte mensagem de erro, acho que faz sentido ter 
dado erro pq estou dando select em 3 campos mas atribuindo a apenas uma 
variavel, no caso o que me importa é somente o resultado do sum,.

count of column list and variable list do not match.
Dynamic SQL Error.
SQL error code = -313.
count of column list and variable list do not match.


Eliomar escreveu:

>1 - VC tem que criar seu campo de saida como 
>numeric e não integer;
>
>2 - No final depois do group by tem que colocar o into :pesototal;
>
>copia o codigo abaixo e tenta rodar vamo ver se funciona como vc quer.
>
>CREATE PROCEDURE NEW_PROCEDURE (
>   CDPRODUTO INTEGER)
>RETURNS (
>   PESOTOTAL NUMERIC(18,3))
>AS
>begin
>  SELECT A.CDCOMPONENTE,
>         A.QUANTIDADE,
>         B.PESO,
>         SUM (A.quantidade * B.peso) as pesotot
>    FROM COMPRODUTO as A
>    left JOIN componente b ON (B.cdcomponente=A.cdcomponente)
>   WHERE IDPRODUTO=:CDPRODUTO
>   Group By A.CDCOMPONENTE,
>            A.QUANTIDADE,
>            B.PESO
>     into :PESOTOTAL;
>  suspend;
>end
>
>Agradecido.
>Eliomar,
>ICQ - 167715482
>Soft-Data Softwares Administrativos
>hptt://www.promediconet.com.br
>
>
>------------- Segue mensagem original! -------------
>
>De: Hernando <mecanvpcusto em mecan.com.br>
>Data: Tue, 18 Jan 2005 08:54:58 -0200
>Para: FireBase <lista em firebase.com.br>
>Assunto: [firebase-br] procedure simples dando dor de	cabeça
>
>bom dia a todos da lista!
>
>estou tentando criar esta procedure simples, mas esta dando erro e não 
>estou conseguindo identificar onde está o erro. se eu tirar o ponto e 
>virgula da linha do select da erro na linha seguinte da variavel e se eu 
>coloco  o ponto e virgula da erro na linha do select.    ibexpert/fb1.0
>
>CREATE PROCEDURE NEW_PROCEDURE (
>    CDPRODUTO INTEGER)
>RETURNS (
>    PESOTOTAL INTEGER)
>AS
>begin
>SELECT A.CDCOMPONENTE, A.QUANTIDADE, B.PESO, SUM (A.quantidade * B.peso) 
>as pesotot  FROM COMPRODUTO A left JOIN componente b ON 
>(B.cdcomponente=A.cdcomponente) WHERE IDPRODUTO=
>:CDPRODUTO Group By A.CDCOMPONENTE, A.QUANTIDADE, B.PESO;
>:PESOTOTAL = PESOTOT;
>suspend;
>end
>
>
>  
>







-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.6.13 - Release Date: 16/01/2005





Mais detalhes sobre a lista de discussão lista