1.在Oracle中,您可以使用USER_TAB_COLUMNS
视图来查询所有表的所有字段,然后使用动态SQL来构建查询语句,以检查表中的数据是否包含特定关键字:
1.创建存储过程
CREATE OR REPLACE PROCEDURE SEARCH_KEYWORD_BY_ALL_TABLE(V_SEARCH_KEYWORD IN VARCHAR2,
OUT_RTN_CODE OUT NUMBER,
OUT_RTN_INFO OUT VARCHAR2) AS
--@desc: 模糊查询所有表数据中是否包含关键字
V_SQL_QUERY VARCHAR2(4000);
V_COUNT NUMBER; -- 计数
V_RESULT VARCHAR2(4000); -- 结果描述
BEGIN
OUT_RTN_CODE := 1;
FOR C IN (SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM USER_TAB_COLUMNS
WHERE DATA_TYPE in ('VARCHAR2', 'NVARCHAR2', 'VARCHAR', 'NVARCHAR')) LOOP
V_SQL_QUERY := 'SELECT COUNT(*) FROM ' || C.TABLE_NAME || ' WHERE ' ||
C.COLUMN_NAME || ' LIKE ''%' || V_SEARCH_KEYWORD ||
'%''';
EXECUTE IMMEDIATE V_SQL_QUERY INTO V_COUNT;
IF V_COUNT >= 1 THEN
V_RESULT := V_RESULT || ' ' || '表名:' || C.TABLE_NAME || ' 字段名:' || C.COLUMN_NAME || ' ';
END IF;
END LOOP;
OUT_RTN_INFO := V_RESULT;
END;
执行存储过程:输入参数V_SEARCH_KEYWORD:上杭,结果:
备注:输出结果参数:V_RESULT最大支持4000个字符,超出会报错,仅供娱乐