1
CREATE OR REPLACE PROCEDURE TESTE (COLUNA IN VARCHAR2,TABELA IN VARCHAR2 ) IS
CUR_PESSOA INTEGER;
TEXTO VARCHAR(100);
TEMP NUMBER;
BEGIN
CUR_PESSOA:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.parse(CUR_PESSOA,'SELECT '||COLUNA|| ' FROM '|| TABELA, DBMS_SQL.V7);
DBMS_SQL.DEFINE_COLUMN (CUR_PESSOA,1,TEXTO,100);
TEMP:=DBMS_SQL.EXECUTE(CUR_PESSOA);
LOOP
IF DBMS_SQL.FETCH_ROWS (CUR_PESSOA)=0
THEN EXIT;
ELSE
DBMS_SQL.COLUMN_VALUE (CUR_PESSOA,1,TEXTO);
DBMS_OUTPUT.PUT_LINE (TEXTO);
END IF;
END LOOP;
DBMS_SQL.CLOSE_CURSOR (CUR_PESSOA);
END TESTE;
2
CREATE OR REPLACE PROCEDURE QUERY (QUERY_IN IN VARCHAR2) IS
CUR_HANDLE INTEGER;
TEMP NUMBER;
BEGIN
CUR_HANDLE:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(CUR_HANDLE,QUERY_IN,DBMS_SQL.V7);
TEMP:=DBMS_SQL.EXECUTE(CUR_HANDLE);
DBMS_SQL.CLOSE_CURSOR (CUR_HANDLE);
DBMS_OUTPUT.PUT_LINE (Num. de linha tratadas:' || temp);
end query ;
3
DECLARE
V_TABELA VARCHAR2 (100);
V_COLUNA VARCHAR2 (100);
LINHA VARCHAR2 (200);
out_file UTL_File.File_type;
CURSOR TAB IS
SELECT TABLE_NAME TABELA ,COLUMN_NAME COLUNA FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE 'CODCOLI%';
BEGIN
out_file := Utl_File.Fopen ('C:\TEMP','DELCOL.SQL','w');
FOR REG_TAB IN TAB LOOP
V_TABELA := REG_TAB.TABELA;
V_COLUNA := REG_TAB.COLUNA;
LINHA := 'DELETE FROM ' ||REG_TAB.TABELA || ' WHERE ' || REG_TAB.COLUNA || '=1;';
UTL_FILE.PUT_LINE (OUT_FILE,LINHA);
END LOOP;
Utl_File.FClose (out_file);
Dbms_Output.Put_Line ('ARQUIVO GERADO COM SUCESSO');
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
Dbms_Output.Put_Line ('OPERAÇÃO INVALIDA NO ARQUIVO.');
Utl_File.FClose (OUT_FILE);
WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line ('DIRETORIO INVÁLIDO');
Utl_File.FClose (OUT_FILE);
END ;