ORA-00984 - Tabela não permitida aqui

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
milhorini
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 26
Registrado em: Qua, 05 Dez 2012 7:28 am

Estou recebendo essa mensagem (ORA-00984 - tabela não permitida aqui) em uma inserção. Explico porque estou recebendo essa mensagem mais abaixo. Vou postar o meu código, juntamente com as permissões que a conta tem.

Selecionar tudo

Esquemas do Espaço de Trabalho

Esquemas:	MILHORINI
Tablespaces:	MILHORINI
Privilégios:	create any directory, create materialized view, create procedure, create sequence, create session, create synonym, create table, create tablespace, create trigger, create user, create view, drop user
Privilégios de Atribuição do Banco de Dados:	connect, resource
Esquema de relação:

Selecionar tudo

PRODUTO ( prod_id : number, prod_numero : number, prod_data : date )
VENDA ( venda_id : number, preço_compra : number, preço_venda : number, imposto : number  )
Não há quaisquer chaves nesses esquemas de relação.

Criei ainda uma sequência:

Selecionar tudo

CREATE SEQUENCE   "SEQ_VENDA"  
MINVALUE 1 
MAXVALUE 99 
INCREMENT BY 1 
START WITH 1 
CACHE 20 
NOORDER  
NOCYCLE ;
Depois, criei um procedure:

Selecionar tudo

create or replace procedure pro_calculo_preço_venda
(
 preço_compra IN venda.preço_compra%TYPE, 
 imposto IN venda.imposto%TYPE, 
 preço_venda OUT venda.preço_venda%TYPE
)
is
begin
 preço_venda := preço_compra + preço_compra * imposto;
end;​
Em seguida, uma trigger:

Selecionar tudo

create or replace trigger tri_produto_insert after insert on produto
declare
 preço_venda_final number;
begin
  --chamo aqui o meu procedure
 pro_calculo_preço_venda(&preço_compra, &porcentagem_imposto, preço_venda_final);
 dbms_output.put_line('preço_venda_final: '|| preço_venda_final);
 insert into venda values
(
seq_venda.nextval, 
preço_compra, 
preço_venda_final, --aqui ocorre o erro!
porcentagem_imposto
);
end;
/
Bem, eu estou rodando no sql-plus, pois estou querendo usar variáveis, como se pode ver no código da trigger (&).
A mensagem de ORA-00984: coluna não permita aqui ocorre no insert na trigger, mais especificamente em preço_venda_final. Usei dbms_output.put_line para imprimir o valor de preço_venda_final e é impresso normalmente (comento o insert para poder compilar a trigger). Coloquei um valor inteiro no lugar e o erro persiste. Dei drop table em VENDA e a recriei e o erro persiste.

Alguém pode me ajudar?
milhorini
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 26
Registrado em: Qua, 05 Dez 2012 7:28 am

Fiz alguns testes e descobri que as variáveis preço_compra e porcentagem_imposto estão gerando os erros, que são as precedidas por um e comercial - &.

Se eu desejo entrar com informações do sql-plus e colocá-las nessas variáveis, como posso pegar esses valores e utilizá-los no insert?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes