我的表结构如下:
tabble_name_temp1
col_up col_down
akash kavita
kavita aruhi
aruhi Akash
tabble_name_temp2
col_up col_down
akash kavita
kavita simran
jyoti Akash
tabble_name_temp3
col_up col_down
akash kavita
kavita simran
jyoti Akash我想要选择表的名称
值例如:如果我输入
akash and simran那么这应该看起来像这样
tabble_name_temp2
tabble_name_temp3提前感谢!
发布于 2013-05-24 17:26:20
Oracle具有存储表/列相关数据的all_objects和all_tab_columns表。您可以从这些表中进行选择,然后形成动态查询,以检查这些表中是否存在给定的数据。下面是单个输入的示例代码。如果有多个输入,则必须多次重复此操作。
DECLARE
l_chr_query VARCHAR2 (2000);
l_num_count NUMBER (1);
BEGIN
FOR i IN (SELECT table_name, column_name
FROM all_tab_columns
WHERE table_name IN (
SELECT object_name
FROM all_objects
WHERE object_name LIKE 'SA_%' AND object_type = 'TABLE')
AND data_type = 'VARCHAR2') --modify the where clause as per your needs
LOOP
l_num_count := 0;
l_chr_query :=
'select count(1) from ' || i.table_name || ' where ' || i.column_name
|| ' = ''akash'' and rownum = 1';
--execute the query
EXECUTE IMMEDIATE l_chr_query INTO l_num_count;
IF l_num_count > 0
THEN
DBMS_OUTPUT.put_line (i.table_name);
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;一旦找到表,您可以将其保存在数组中,并在下一次迭代相同表但不同列时跳过对同一表的检查。
https://stackoverflow.com/questions/16728063
复制相似问题