您可以使用以下腳本在模式的所有列中搜索值。腳本的執行時間取決於模式中表的數量以及每個表中的行數。
用您打算搜索的值替換'abc'。此外,腳本現在將搜索所有VARCHAR2列。您還可以將表名和計數插入到表中,而不是執行DBMS_OUTPUT.PUT_LINE。
DECLARE
CURSOR cur_tables
IS
SELECT table_name,
column_name
FROM user_tab_columns
WHERE data_type = 'VARCHAR2';
v_sql VARCHAR2(4000);
v_value VARCHAR2(50);
v_count NUMBER;
BEGIN
v_value := 'abc';
FOR c_tables IN cur_tables LOOP
v_sql := 'SELECT count(1) FROM ' || c_tables.table_name || ' WHERE ' || c_tables.column_name || ' = :val' ;
EXECUTE IMMEDIATE v_sql INTO v_count USING v_value;
IF v_count > 0 THEN
DBMS_OUTPUT.PUT_LINE('Table Name ' || c_tables.table_name || ' Column Name ' || c_tables.column_name || ' Row Count ' || v_count);
END IF;
END LOOP;
END;
您不可能同時使用MySQL,SQL Server和Oracle。請做**不**只是隨機添加標籤,聽起來很熟悉你的問題。只添加**實際相關的標籤**。如果您不確定,請閱讀標籤說明。如果之後不確定,請不要添加標籤;如果需要的話,這裏有人會添加它。標籤具有特定的含義。 –
這些是SO建議的標籤。現在刪除。 – whyeliah
人們不斷建議對我的代碼進行修改。我只是在他們進來時才批准他們。我正在使用Oracle的桌面軟件SQLDeveloper。標記帖子,但是,你看到適合。 – whyeliah