发布网友 发布时间:2022-04-22 01:11
共3个回答
热心网友 时间:2024-01-05 06:42
create or replace procere p_cur(tabName in varchar2, --要查询的表名
v_value in 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;
热心网友 时间:2024-01-05 06:42
1 查出该表的所有列(字符串类型的)
2 遍历每个列,动态构造SQL的筛选条件 , like '%aa%'
3 执行SQL追问帮忙写下具体语句,谢谢。
热心网友 时间:2024-01-05 06:43
select * from AAA where a=aa or b=aa or c=aa