还是不明白Oracle返回值这一块,急用,大家帮忙吧

kostion 2009-02-27 02:20:21
帮我写出代码,一个函数selectable,传入一个表名(datetable),输出或返回的是这个表名加当前的年。例如datetable2009.顺便帮忙解答。有人说函数的参数列表里不能有out类型,是不是真的。
...全文
83 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kostion 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vc555 的回复:]
这两个问题,你自己编译运行测试下不就知道了吗?
[/Quote]

呵呵,我也觉得我有点太过分了,谢谢大哥。
vc555 2009-02-27
  • 打赏
  • 举报
回复
这两个问题,你自己编译运行测试下不就知道了吗?
kostion 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vc555 的回复:]
sqlplus
[/Quote]

还有,比如在我的包里还有很多的存储过程,在我的存储过程里可以调用这个函数吗?如果可以,怎么掉,是包名加.函数名
(value := PROCESS_DATA.selectable('tablename'))还是直接就函数名就可以(value := selectable('tablename'))
kostion 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 vc555 的回复:]
sqlplus
[/Quote]
这位大哥,最后一问,谢谢,看我这样写包对吗,包头和包体

create or replace package PROCESS_DATA is

function selectable(tname varchar2) return varchar2;

end PROCESS_DATA;

create or replace package body PROCESS_DATA is
function selectable(tname varchar2)

return varchar2

as
v_date varchar2(100);

begin

v_date:=tname||to_char(sysdate,'yyyy');

return v_date;

end;
end PROCESS_DATA;
vc555 2009-02-27
  • 打赏
  • 举报
回复
sqlplus
kostion 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vc555 的回复:]
上面把你的需求看错了:
SQL codeOPER@tl>createorreplacefunctionxx1(tnamevarchar2)2returnvarchar23as4v_datevarchar2(2000);5begin6v_date:=tname||to_char(sysdate,'yyyy');7returnv_date;8end;9/函数已创建。

OPER@tl>selectxx1('datetable')fromdual;

XX1('DATETABLE')---------------------------------datetable2009

OPER@tl>
[/Quote]

谢谢这位大哥,请问您用的什么编译器。
fuyou001 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vc555 的回复:]
上面把你的需求看错了:

SQL codeOPER@tl> create or replace function xx1(tname varchar2)
2 return varchar2
3 as
4 v_date varchar2(2000);
5 begin
6 v_date:=tname||to_char(sysdate,'yyyy');
7 return v_date;
8 end;
9 /

函数已创建。

OPER@tl> select xx1('datetable') from dual;

XX1('DATETABLE')
---------------------------------
datetable2009

OPER@tl>
[/Quote]
学习了
vc555 2009-02-27
  • 打赏
  • 举报
回复
上面把你的需求看错了:
OPER@tl> create or replace function xx1(tname varchar2)
2 return varchar2
3 as
4 v_date varchar2(2000);
5 begin
6 v_date:=tname||to_char(sysdate,'yyyy');
7 return v_date;
8 end;
9 /

函数已创建。

OPER@tl> select xx1('datetable') from dual;

XX1('DATETABLE')
---------------------------------
datetable2009

OPER@tl>
vc555 2009-02-27
  • 打赏
  • 举报
回复
问题1:
OPER@tl> create or replace function xx1(tname varchar2) 
2 return varchar2
3 as
4 v_date varchar2(10);
5 begin
6 v_date:=substr(tname,-4);
7 return v_date;
8 end;
9 /

函数已创建。

OPER@tl> select xx1('datetable2009') from dual;

XX1('DATETABLE2009')
---------------------------
2009

OPER@tl>


问题2:
函数必须有return,还要out干嘛呢?

17,086

社区成员

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

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