oracle查詢乙個字串所在表

2021-07-26 02:58:37 字數 2923 閱讀 7872

我先建了乙個表

create table data_table 

(tablename varchar2(40),

clo varchar2(40),

data varchar2(40),

exe_date date);

declare c varchar2(30);

begin

-- call the procedure

c :='aafunct110900000066';

p_data (c);

end;

--select count(*) from data_table

建立或修改儲存過程

create or replace procedure p_data

(in_data in varchar2 --輸入的引數,就是上邊我輸入的abc)is

--設定變數,你看名字應該基本都能看懂

v_tablename   varchar2(40);

v_cloumn_name varchar2(40);

--v_date_type   varchar2(40);

v_count     int;

v_sql       varchar2(2000);

v_data_type varchar2(40);

--按照如下條件取出游標,其中users是表空間,那個地方你可以改

cur_data sys_refcursor;

begin--判斷是數字

if lower(in_data) = upper(in_data) then

v_sql :=' select a.table_name, a.column_name, a.data_type from user_tab_columns a, tabs b where a.table_name = b.table_name'

||' and b.tablespace_name like ''nnc_%'' and (a.data_type = ''number'') order by a.table_name, a.column_name;'; --users

open cur_data for v_sql;--開啟游標

loop

fetch cur_data

into v_tablename, v_cloumn_name, v_data_type;

exit when cur_data%notfound;

--取出游標裡的各個變數,拼成動態sql語句,

if v_data_type = 'number' then

v_sql := 'select count(*) from ' || v_tablename || ' where ' || v_cloumn_name || ' = ' ||in_data;

end if;

execute immediate v_sql

into v_count;

--如果查詢出來的條數大於,則將查詢中的表名,欄位名和輸入的內容插入到我建的那個表中

if v_count > 0 then

v_sql := 'insert into data_table values (''' || v_tablename ||

''',''' || v_cloumn_name || ''',''' || in_data ||

''',sysdate)';

execute immediate v_sql;

commit;

end if;

end loop;

close cur_data;

else--不是數字

v_sql :=' select a.table_name, a.column_name, a.data_type from user_tab_columns a, tabs b where a.table_name = b.table_name'

||' and b.tablespace_name like ''nnc_%'' and (a.data_type = ''varchar2'') order by a.table_name, a.column_name'; --users

open cur_data for v_sql;--開啟游標

loop

fetch cur_data

into v_tablename, v_cloumn_name, v_data_type;

exit when cur_data%notfound;

--取出游標裡的各個變數,拼成動態sql語句,

if v_data_type = 'varchar2' then

v_sql := 'select count(*) from ' || v_tablename || ' where instr(' || v_cloumn_name || ',''' || in_data || ''')>0';

else

v_sql := 'select count(*) from data_table where 1=2';

end if;

execute immediate v_sql into v_count;

--如果查詢出來的條數大於,則將查詢中的表名,欄位名和輸入的內容插入到我建的那個表中

if v_count > 0 then

v_sql := 'insert into data_table values (''' || v_tablename || ''',''' || v_cloumn_name || ''',''' || in_data || ''',sysdate)';

execute immediate v_sql;

commit;

end if;

end loop;

close cur_data;

end if;

--end;

end p_data;

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...

在乙個字串中查詢另外乙個字串的全排列出現位置

1 在乙個字串中查詢另外乙個字串任意的全排列出現位置。例如 a abcfsfcba b abc 則返回。the des s character must be adjacent public static list integer getindex string res,string des has...

php判斷乙個字串包含另乙個字串

a 58252,58253 如果 a 中存在 b,則為 true 否則為 false。b 58253 if strpos a,b false else 查詢字串在陣列中出現的次數 array array 1,hello 1,world hello 11 計算 string在 array 需為陣列 中...