入门oracle问题,select变量出来,来人帮忙

McGregorWang 2009-07-29 03:41:41
declare a varchar2(40);
b varchar2(20);
begin
a:='123';
b:='456';
select a,b from dual;
end;
/
有错怎么改让它返回一个表,返回的表有两列,一个是a,一个是b。必须要返回表。
...全文
557 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-07-29
  • 打赏
  • 举报
回复
SQL> create or replace type T_STRARR is table of varchar(4000);
2 /

SQL> create or replace function sample_table_test return T_STRARR is
2 v_arr1 T_STRARR;
3 begin
4 v_arr1 := T_STRARR(2);
5 v_arr1.EXTEND;
6 v_arr1(1):='a';
7 v_arr1.EXTEND;
8 v_arr1(2):='b';
9 return v_arr1;
10 end;
11 /

Function created.


SQL> select * from table(sample_table_test);

COLUMN_VALUE
--------------------------------------------------------------------------------
a
b







ojuju10 2009-07-29
  • 打赏
  • 举报
回复

--建立过程
create or replace procedure
p_test(p_cur out sys_refcursor)
as
begin
open p_cur
for
select * from loginfo;
end p_test;
--sqlplus调用
var r refcursor;
exec p_test(:r);
print r;

majy 2009-07-29
  • 打赏
  • 举报
回复
declare
a varchar2(40);
b varchar2(20);
begin
a:='123';
b:='456';
execute immediate 'select ' || a || ', ' || b || 'from dual';
end;
阿三 2009-07-29
  • 打赏
  • 举报
回复
可以看看http://topic.csdn.net/u/20090721/12/ba403739-3212-4016-83ec-2a7062f21081.html
这个贴子,与你的需求有些相似.
opps_zhou 2009-07-29
  • 打赏
  • 举报
回复
使用游标返回吧

declare
ocursor sys_refcursor;
stra varchar2(20);
strb varchar2(20);
begin
stra := '123';
strb := '456';

open ocursor for
select stra as col1, strb as col2 from dual;
end;

csuxp2008 2009-07-29
  • 打赏
  • 举报
回复
pl/sql块中直接select查询是不起作用的,你可以调用系统输出包来输出这两个值

set serveroutput on

declare
a varchar2(40);
b varchar2(20);
begin
a:='123';
b:='456';
dbms_output.put_line('a:'||a||',b:'||b);
end;
/

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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