根据列名作为查询条件来查询 要动态的 例如: 表A 里面有 字段 name ,age 这两个字段
我要查询表A中的name的值 可以这样 select name from 表A;现在的问题是 要动态的 select 这里动态的传入列名 from 表A;
我要查询表A中的name的值 可以这样 select name from 表A;现在的问题是 要动态的 select 这里动态的传入列名 from 表A;
解决方案 »
- 散分啦——oracle连接查询
- 新人求助!触发器的问题!
- 求一条sql
- Oracle里是否存在与SQL SERVER 2000数据库一样的功能,即怎么知道连接后所有用户对该数据库所执行的语句操作,在SQL SERVER 2000里好象是叫
- 在SQL*Plus中用insert插进的都是中文的,为什么一存入服务器后,再select出的就是???”
- oracle中表行和列怎么替换?
- [ORACLE][ODBC]Restricted data type attribute violation 错误! 急~~~~~~~~~
- 可恶的汉字编码
- 请问在pl/sql中如何调用function
- 错误类型:Provider (0x80004005) /hh/index.asp, 第 147 行200分
- 如何用SQL实现列转行?
- 采用full outer join后SQL语句执行太慢,结果出不来了
查询的sql用动态拼接:
EXECUTE IMMEDIATE 'select '||p_column_name||' from A';
my_cur cur;open my_cur for 'select '||p_column_name||' from A';
...
create or replace procedure proc_test(col varchar2, c in out sys_refcursor) is
begin
open c for 'select ' || col || ' from employees';
end;
-- 測試
variable cr refcursordeclare
cc sys_refcursor;
begin
proc_test('last_name', cc);
:cr := cc;
end;
print cr
2 v_col varchar2(50);
3 type cur_type is ref cursor;
4 cur cur_type;
5 col1 varchar2(50):='id';
6 begin
7 open cur for 'select '||col1||' from tt' ;
8 fetch cur into v_col;
9 while cur%found loop
10 dbms_output.put_line(v_col);
11 fetch cur into v_col;
12 end loop;
13 close cur;
14 end;
15 /
wkc168
2
2
2
2
2
8
test
11
22
44PL/SQL 过程已成功完成。
如何用 cursor cur is 'select '||p_column_name||' from A';
这种游标来实现?
create or replace procedure p(p_column_name in varchar2)
is
type cur is ref cursor ;
type my_type is record(str varchar2(100));
my_cur cur;
rs my_type;
begin
open my_cur for 'select '||p_column_name||' from A';
loop
fetch my_cur into rs;
exit when my_cur%notfound;
dbms_output.put_line(rs.str);
end loop;
close my_cur;
end;