2026-03-12 20:23:15
This commit is contained in:
48
vg/dba_to_fileblock.sql
Normal file
48
vg/dba_to_fileblock.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
set echo off
|
||||
set term off
|
||||
store set backupenv replace
|
||||
set term on
|
||||
|
||||
set serveroutput on
|
||||
|
||||
DECLARE
|
||||
iblock VARCHAR2(50) := '&&1' ;
|
||||
imode VARCHAR2(1) :='&2';
|
||||
x NUMBER;
|
||||
digits# NUMBER;
|
||||
results NUMBER := 0;
|
||||
file# NUMBER := 0;
|
||||
block# NUMBER := 0;
|
||||
cur_digit CHAR(1);
|
||||
cur_digit# NUMBER;
|
||||
BEGIN
|
||||
IF upper(imode) = 'H' THEN
|
||||
digits# := length( iblock );
|
||||
FOR x IN 1..digits# LOOP
|
||||
cur_digit := upper(substr( iblock, x, 1 ));
|
||||
IF cur_digit IN ('A','B','C','D','E','F') THEN
|
||||
cur_digit# := ascii( cur_digit ) - ascii('A') +10;
|
||||
ELSE
|
||||
cur_digit# := to_number(cur_digit);
|
||||
END IF;
|
||||
results := (results *16) + cur_digit#;
|
||||
END LOOP;
|
||||
ELSE
|
||||
IF upper(imode) = 'D' THEN
|
||||
results := to_number(iblock);
|
||||
ELSE
|
||||
dbms_output.put_line('H = Hex Input ... D = Decimal Input');
|
||||
RETURN;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
file# := dbms_utility.data_block_address_file(results);
|
||||
block# := dbms_utility.data_block_address_block(results);
|
||||
|
||||
dbms_output.put_line('.');
|
||||
dbms_output.put_line( 'The file is ' || file# );
|
||||
dbms_output.put_line( 'The block is ' || block# );
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user