Criar Procedure

Firebird

24/11/2006

Bom dia

Estou com um problema que acho que é simples, mas não estou conseguindo.
Estou aprendendo a usar mais codigo no banco, gostaria que vejam o q eu fiz de errado.


CREATE PROCEDURE UPDATE_EMP_PROD
AS
begin
update empresas_produtos_servicos set codigo_empresa = :empresa, codigo_prod_serv = :prod_serv, quant_mes = :quantidade, ano_referencia = :ano
where codigo_empresa = :cod_empresa and codigo_prod_serv = :cod_prod_serv and ano_referencia = :ano;
suspend;
end

///Descrição do erro
Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
EMPRESA.
At line 4, column 59.


Nussbaum

Nussbaum

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

24/11/2006

CREATE PROCEDURE UPDATE_EMP_PROD 
AS 
begin 
update empresas_produtos_servicos set codigo_empresa = :empresa, codigo_prod_serv = :prod_serv, quant_mes = :quantidade, ano_referencia = :ano 
where codigo_empresa = :cod_empresa and codigo_prod_serv = :cod_prod_serv and ano_referencia = :ano; 
suspend; 
end 

///Descrição do erro 
Column does not belong to referenced table. 
Dynamic SQL Error. 
SQL error code = -206. 
Column unknown. 
EMPRESA. 
At line 4, column 59.


de onde virá o valor do parâmetro :empresa? acho que é aí que o mecanismo do banco está encontrando problemas.
sua SP deveria ser mais ou menos assim:
CREATE PROCEDURE UPDATE_EMP_PROD (
    empresa integer,
    prod_serv integer,
    quantidade integer,
    ano integer,
    cod_empresa integer,
    cod_prod_serv integer)
as
begin 
update empresas_produtos_servicos set codigo_empresa = :empresa, codigo_prod_serv = :prod_serv, quant_mes = :quantidade, ano_referencia = :ano 
where codigo_empresa = :cod_empresa and codigo_prod_serv = :cod_prod_serv and ano_referencia = :ano; 
end

para usá-a, a sintaxe é:
execute procedure UPDATE_EMP_PROD(novaempresa, novoprodserv, novaquantidade, ano, empresaatual, prodservatual)[/code]


GOSTEI 0
POSTAR