提供的代碼僅供測試,實際應(yīng)用需要作少量修改
示例如下:
?1?create?or?replace?procedure?search(v_colname?in?varchar2,?v_find?in?varchar2)?as
?2???v_sql?varchar2(2000);
?3???v_result?varchar2(1000);
?4???v_cursor?number;
?5???v_stat?number;
?6?begin
?7???dbms_output.put_line('表名,列名,結(jié)果');
?8???for?a?in?(select?table_name,column_name?from?user_tab_columns?where?column_name?=?v_colname)?loop
?9???????v_cursor?:=?dbms_sql.open_cursor;
10???????v_sql?:=?'select?'?||?v_colname?||?'?from?'?||?a.table_name?||?'?where?'?||?v_colname?||?'?like?''%'?||?v_find?||?'%''';
11???????dbms_sql.parse(v_cursor,v_sql,dbms_sql.native);
12???????dbms_sql.define_column(v_cursor,1,v_result,1000);
13???????v_stat?:=?dbms_sql.execute(v_cursor);
14???????loop?exit?when?dbms_sql.fetch_rows(v_cursor)<=0;
15????????????dbms_sql.column_value(v_cursor,1,v_result);
16????????????dbms_output.put_line(a.table_name||','||a.column_name||','||v_result);
17???????end?loop;
18???????dbms_sql.close_cursor(v_cursor);
19???end?loop;
20?end?search;
21?
在oracle 10g下測試通過.
使用方法:
begin search('...','...'); end;
/
第一個參數(shù)是知道的列名,第二個參數(shù)是需要查找的數(shù)據(jù)
下面是執(zhí)行效果:
?1?SQL>?begin?search('答案','試題規(guī)范');?end;
?2???2??/
?3??
?4?表名,列名,結(jié)果
?5?數(shù)據(jù)值答案表,答案,面試試題規(guī)范。
?6?數(shù)據(jù)值答案表,答案,進一步完善面試試題規(guī)范。
?7?數(shù)據(jù)值答案表,答案,修改考核試題規(guī)范。
?8?數(shù)據(jù)值答案表,答案,進一步完善考核試題規(guī)范。
?9?數(shù)據(jù)值答案表,答案,考核試題規(guī)范有誤。
10?數(shù)據(jù)值答案表,答案,修改考核高級試題規(guī)范。
11?數(shù)據(jù)值答案表,答案,考核高級試題規(guī)范快速分頁規(guī)范,修改錯誤頁面。