execute immediate
Olá,
Estou tentando fazer uma rotina que receba um nome qualquer e "descubra" se se trata de tabela, índice ou constraint. Assuma que somente nomes existentes serão fornecidos. A rotina deve informar o nome do objeto e seu tipo descoberto. Se for uma tabela, também deve mostrar quantas linhas possui.
Estou com a seguinte dificuldade. Não estou conseguindo mostrar quantas linhas a tabela possui.
CREATE OR REPLACE PROCEDURE Verifica (busca VARCHAR2)
IS
cursor c_busca(busca in VARCHAR2)
IS
SELECT object_name, object_type
FROM all_objects
WHERE object_name LIKE busca||'%';
v_temp_var1 all_objects.object_name%TYPE;
v_temp_var2 all_objects.object_type%TYPE;
in_table_count number;
sql_stmt varchar2(300);
BEGIN
OPEN c_busca(busca);
LOOP
FETCH c_busca INTO v_temp_var1, v_temp_var2;
EXIT WHEN c_busca%NOTFOUND;
IF v_temp_var2 LIKE 'TABLE' THEN
dbms_output.put_line(v_temp_var1 ||' eh** uma:' || v_temp_var2);
** sql_stmt := 'select count(*) from '|| v_temp_var1;
execute immediate sql_stmt into in_table_count;**
** dbms_output.put_line(sql_stmt);**
ELSE
dbms_output.put_line(v_temp_var1 ||' eh** uma:' || v_temp_var1);
end if;
END LOOP;
CLOSE c_busca;
END ;Discussão (10)
Carregando comentários...