下午沒事寫了個簡單的儲存過程,功能:檢視當前使用者所有表資訊儲存過程(輸出在控制台)
剛開始考慮使用 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...