Posted on 2009-04-02 23:03
S.l.e!ep.¢% 閱讀(241)
評論(0) 編輯 收藏 引用 所屬分類:
Oracle
提供的代碼僅供測試,實際應用需要作少量修改
示例如下:
?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('表名,列名,結果');
?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;
/
第一個參數是知道的列名,第二個參數是需要查找的數據
下面是執行效果:
?1?SQL>?begin?search('答案','試題規范');?end;
?2???2??/
?3??
?4?表名,列名,結果
?5?數據值答案表,答案,面試試題規范。
?6?數據值答案表,答案,進一步完善面試試題規范。
?7?數據值答案表,答案,修改考核試題規范。
?8?數據值答案表,答案,進一步完善考核試題規范。
?9?數據值答案表,答案,考核試題規范有誤。
10?數據值答案表,答案,修改考核高級試題規范。
11?數據值答案表,答案,考核高級試題規范快速分頁規范,修改錯誤頁面。