檢視當前使用者所有表資訊儲存過程 輸出

2021-08-31 13:14:26 字數 1917 閱讀 4126

下午沒事寫了個簡單的儲存過程,功能:檢視當前使用者所有表資訊儲存過程(輸出在控制台)

剛開始考慮使用 execute immediate str_sql; 後考慮到與需求不符,放棄

用到了 動態游標,record, **很粗拙,請大家多指點!

create or replace procedure print_tablesinfo3

asstr_sql varchar2(500);

-- 建立乙個資料行型別

type rowdata is record (col_name varchar2(30),

col_type varchar2(106),

isnull varchar2(1),

col_desc varchar2(4000)

);myrow rowdata;

tab_name varchar2(50);--表名

type tcur is ref cursor; -- 動態游標宣告

cur tcur;--列資訊游標

tab_cur tcur;--表資訊游標

v_user varchar2(50);-- 使用者名稱

begin

select user into v_user from dual;--查詢當前使用者名稱

dbms_output.put_line('當前使用者名稱: '||v_user);

-- 查詢使用者的所有表

str_sql := 'select object_name from user_objects where object_type=' || q'!'table'!';

--dbms_output.put_line(str_sql);

open tab_cur for str_sql;

loop

fetch tab_cur into tab_name;

exit when tab_cur%notfound;

dbms_output.put_line('');

dbms_output.put_line('表名:'||tab_name);

str_sql := 'select t.column_name,t.data_type,t.nullable, col.comments from user_tab_columns t,user_col_comments col

where col.table_name = t.table_name and

t.column_name = col.column_name and t.table_name = '||q'! '!' || tab_name || q'!' !' ;

--dbms_output.put_line(str_sql); -- 除錯時用

dbms_output.put_line('列名 '||' 型別 '||' 是否為空 '||' 描述 ');

dbms_output.put_line('******************************===');

open cur for str_sql;

loop

fetch cur into myrow;

exit when cur%notfound;

dbms_output.put_line(myrow.col_name || ' ' || myrow.col_type || ' ' || myrow.isnull || ' '||myrow.col_desc );

end loop;

close cur;

--dbms_output.put_line('******************************===');

end loop;

close tab_cur;

end;

oracle檢視當前使用者資訊

一 檢視當前使用者資訊 1 檢視當前使用者擁有的角色許可權資訊 select from role sys privs 2 檢視當前使用者的詳細資訊 select from user users 3 檢視當前使用者的角色資訊 select from user role privs 總結 oracle中...

oracle檢視當前使用者資訊

一 檢視當前使用者資訊 1 檢視當前使用者擁有的角色許可權資訊 select from role sys privs 2 檢視當前使用者的詳細資訊 select from user users 3 檢視當前使用者的角色資訊 select from user role privs 總結 oracle中...

新增使用者查詢當前使用者所有表

今天在bbs上看到一位提出 新增使用者只能查詢當前使用者所有表,於是簡單地測試了一下 sql create user aaa identified by bbb 使用者已建立。sql grant select any table to aaa 授權成功。sql grant connect to aa...