<pre id=\"best-answer-content\" class=\"reply-text mb10\">create or replace procedure p_cur(tabNamein varchar2, --要查询的表名
v_valuein varchar2, --查询的字符串
p_cursor out testpackage.test_cursor) AS
v_NAME VARCHAR2(20); --要查询表的列名
CURSOR ct(tabName1 varchar2) IS
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = tabName1; --指向查询表结构信息的游标
SQL_string varchar2(32767); --生成查询语句
begin
OPEN ct(tabName);
SQL_string := \'SELECT * FROM \' || tabName || \' WHERE 1=0 \';
LOOP
FETCH ct
INTO v_NAME;
EXIT WHEN ct%NOTFOUND;
SQL_string := SQL_string || \' OR TO_CHAR(\' || v_NAME || \') LIKE (\'\'%\' ||
v_value || \'%\'\')\';
END LOOP;
CLOSE ct;
dbms_output.put_line(SQL_string);
open p_cursor for SQL_string;
close p_cursor;
end p_cur;