" ALL_TAB_COLUMNS "là một systable, có tất cả kiểu dữ liệu cột trong bảng, v.v.
" USER_TAB_COLUMNS "là một systable, có tất cả kiểu dữ liệu cột của bảng, v.v. (chủ sở hữu nào là người dùng hiện tại). (Cảm ơn gia hạn)
Ví dụ:
SET SERVEROUTPUT ON SIZE 100000 -- maybe you have a lot of table and columns
DECLARE
matches INTEGER;
BEGIN
FOR columns IN (SELECT table_name, column_name FROM user_tab_columns where data_type = 'VARCHAR2') LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM '||t.table_name||' WHERE instr('||t.column_name||' , :1) > 0'
INTO matches
USING 'What you search';
IF matches > 0 THEN
dbms_output.put_line( t.table_name ||' '||t.column_name||' '||matches );
END IF;
END LOOP;
END;
/
truy vấn này sẽ xuất ra table_name '' column_name '' và đếm, nếu bạn có cột và tên bảng độc lập, bạn có thể thay đổi truy vấn dưới dạng IF cột> 0, sau đó viết một truy vấn UNION trong vòng lặp và trả về con trỏ hoặc trả về một bảng,