Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

duartecool

[Resolvido] procedure

Recommended Posts

olá tenho o seguinte modelo criado:Imagem Postada

 

este modelo serve para verificar dados de outras BD.

 

mas tenho um problema que não estou a conseguir resolver na seguinte procedure:

 

create or replace

procedure fill_field(vowner all_tables.owner%type) AUTHID current_user is

i int := 1;

begin

delete from field;

for t in (select * from tablemm)

loop

for f in (select column_name, data_type, data_precision, data_scale from user_tab_columns where owner = vowner and table_name=t.table_name)

loop

insert into field(table_id, field_id, field_name, datatype, precisao, escala)

values (t.table_id, i, f.column_name, f.data_type, f.data_precision, f.data_scale);

i := i + 1;

end loop;

end loop;

end;

 

 

dá os seguintes erros:

Error(8,10): PL/SQL: SQL Statement ignored

Error(8,96): PL/SQL: ORA-00904: "OWNER": invalid identifier

Error(10,1): PL/SQL: SQL Statement ignored

Error(11,70): PLS-00364: loop index variable 'F' use is invalid

Error(11,72): PL/SQL: ORA-00984: column not allowed here

 

agradecia ajuda pois não tou a ver mesmo o problema ja tenho uma outras procedures do genero e funciona muito bem..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nobre amigo,

Realize um DESC em USER_TAB_COLUMNS, o erro indica que não existe a coluna OWNER no trecho "...where owner = vowner..."

 

Retorne pra gente, caso positivo ou negativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

user_tab_columns é uma view para o owner em questão, por isto não tem o campo owner.

 

tente :

 

user_tab_columns where table_name=t.table_name

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pessoal mas o meu problema foi afinal simples de resolver.. fiz apenas isto:

 

select column_name, data_type, data_precision, data_scale from all_tab_columns where table_name=t.table_name

and owner = vowner)

 

para o que pretendo desta maneira funciona.. não sei é se é a maneira mais correcta.. Esta base de dados vai buscar toda a informação a uma outra base de dados qualquer (o meu owner)

 

caro motta se eu colocar assim como disse não resolve, assim como a solução do caduribeiro13 também não..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.