如题
解决方案 »
- ubuntu下安装oracle11g
- PL/SQL Developer 8.0.2.1505 不停刷新
- 关于left join
- oracle 学习好书推荐一下
- 新手提个问题,谢谢帮忙!
- Oracle的连接池能开多少大?
- 怎么样用SQL LOADER装入含BLOB字段的数据
- 程序错误,高手指点.
- 请问:Full_name:='Nahtan'||''||'Yebba'是什么意思?主要是||不清楚?
- Oracle如何查询小写表名的数据表,解决了100分!
- jdbc分组查询的奇怪问题
- 在sqlplusw中随便乱写select * from **** 返回结果:2 无论select什么结果都是2..... 即使不存的表也是
id name
1 a
2 bb
A B c查询出a的name的值,例如a , b然后查询B表select a , b from b
--建立T_TEST表
CREATE TABLE T_TEST(COL1 VARCHAR2(10));
INSERT INTO T_TEST VALUES('NAME');
INSERT INTO T_TEST VALUES('ID');
--建立T_STUDENT表
CREATE TABLE T_STUDENT(ID NUMBER,NAME VARCHAR2(10));
INSERT INTO T_STUDENT VALUES(1,'YF');
INSERT INTO T_STUDENT VALUES (2,'GN');
--建立函数
CREATE OR REPLACE function f_test(COL IN VARCHAR2) return sys_refcursor AS
R_C SYS_REFCURSOR;
v_sql varchar2(1000);
BEGIN
v_sql:='select '||col||' from t_student';
OPEN R_C FOR v_sql;
return(r_c);
END;
--调用函数
DECLARE
r_c SYS_REFCURSOR;
NAME VARCHAR2(10);
BEGIN
select f_test(col1) into r_c from t_test where rownum<=1;
LOOP
FETCH r_c INTO NAME;
EXIT WHEN r_c%NOTFOUND;
dbms_output.put_Line(NAME);
END LOOP;
CLOSE r_c;
END;感觉这种方法不好,局限性比较大,LZ自己改良和斟酌吧