存储过程:怎样将表a的某列值作为表b的查询列

xiang2003220 2009-03-28 04:40:37
如题
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
changeking 2009-03-29
  • 打赏
  • 举报
回复
select A,b.* from b,(select a.x from a) A
yf520gn 2009-03-28
  • 打赏
  • 举报
回复

--建立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自己改良和斟酌吧。。。
xiang2003220 2009-03-28
  • 打赏
  • 举报
回复
可以啊
yf520gn 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiang2003220 的帖子:]
如题
[/Quote]
用游标LZ愿意不?
dawugui 2009-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hdhai9451 的回复:]
可以不用存储过程的;
但A和B两表之间的关系是什么?你要说出来
[/Quote]
你没明白他的意思.他的意思是

A
id name
1 a
2 b

b
A B c

查询出a的name的值,例如a , b

然后查询B表

select a , b from b
Andy__Huang 2009-03-28
  • 打赏
  • 举报
回复
可以不用存储过程的;
但A和B两表之间的关系是什么?你要说出来
dawugui 2009-03-28
  • 打赏
  • 举报
回复
这个需要使用动态SQL来拼接SQL语句来完成.

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧