Pessoal, boa tarde.
Eu preciso mudar para nulo todos os campos/Colunas que possuam
o valor por exemplo o valor 'AACT".
Esse valor pode estar em qualquer tabela...
Tem como fazer isso?
Obrigada
Vivi
Varrer todas as tabelas procurando um determinado valor
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Boa tarde, tudo bem???
Uma dica seria:
1) Pegar o nome de todas as colunas em ALL_TAB_COLUMNS;
2) Fazer um select dinâmico (ou um execute immediate) varrendo essas colunas e, num loop comparar isso ai.
Eu creio que dessa forma você consiga sim.
Vou ver se tenho algum exemplo e posto aqui, ok ?
Uma dica seria:
1) Pegar o nome de todas as colunas em ALL_TAB_COLUMNS;
SELECT *
FROM ALL_TAB_COLUMNS;
Eu creio que dessa forma você consiga sim.
Vou ver se tenho algum exemplo e posto aqui, ok ?
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Você sabe ao menos o nome da coluna onde possa procurar estes valores?
Isso deve ficar pesado para o BANCO.
Mas, segue um exemplo:
Isso deve ficar pesado para o BANCO.
Mas, segue um exemplo:
DECLARE
CURSOR CUR_CAMPOS
IS
SELECT TABLE_NAME,
COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE DATA_TYPE = 'VARCHAR2';
BEGIN
FOR X IN CUR_CAMPOS
LOOP
EXECUTE IMMEDIATE ' SELECT * FROM ' || X.TABLE_NAME || ' WHERE ' || X.COLUMN_NAME || ' LIKE ''Alcool Hidratado%''';
END LOOP;
END;
-
- Rank: DBA Sênior
- Mensagens: 365
- Registrado em: Ter, 24 Mai 2005 2:24 pm
- Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP
Araraquara - SP
Oi Vivi,
segue um script que faz isso pra você, mas como o Trevisolli disse, isso pode pesar no seu banco...
obs: é bom conferir se esses campos que serão encontrados aceitam valor nulo.
[]'s
segue um script que faz isso pra você, mas como o Trevisolli disse, isso pode pesar no seu banco...
obs: é bom conferir se esses campos que serão encontrados aceitam valor nulo.
DECLARE
v_qtd number(10);
v_PALAVRA VARCHAR2(100) := 'AACT';
v_NOVA_PALAVRA VARCHAR2(100) := '';
BEGIN
FOR reg IN (SELECT TABLE_NAME, COLUMN_NAME FROM user_tab_columns WHERE data_type='VARCHAR2' ORDER BY TABLE_NAME) LOOP
dbms_output.put_line('Analisando tabela/coluna : '||reg.TABLE_NAME||'/'||reg.COLUMN_NAME);
execute immediate
'begin update '||reg.TABLE_NAME||' set '||reg.COLUMN_NAME||' = '''||v_NOVA_PALAVRA||''' where '||reg.COLUMN_NAME||'='''||v_PALAVRA||''';
if sql%rowcount >0 then
dbms_output.put_line('' Foi encontrado ''||sql%rowcount||'' ocorrencia(s) no campo '||reg.COLUMN_NAME||' da tabela '||reg.TABLE_NAME||' '');
end if;
commit;
end;';
END LOOP;
END;
-
- Rank: DBA Pleno
- Mensagens: 241
- Registrado em: Ter, 09 Out 2007 11:15 am
- Localização: Batatais - SP
mas na pergunta ta parecendo que o campo vai ter o valor 'AACT' e não que o nome da coluna seja esta....
pelo menos foi isso q eu entendi...rs
dai pelo menos o nome da coluna você deve saber
abrçs
pelo menos foi isso q eu entendi...rs
dai pelo menos o nome da coluna você deve saber
abrçs
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante