帮我写出代码,一个函数selectable,传入一个表名(datetable),输出或返回的是这个表名加当前的年。例如datetable2009.顺便帮忙解答。有人说函数的参数列表里不能有out类型,是不是真的。

解决方案 »

  1.   

    问题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')
    ---------------------------
    2009OPER@tl> 问题2:
    函数必须有return,还要out干嘛呢?
      

  2.   

    上面把你的需求看错了:
    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')
    ---------------------------------
    datetable2009OPER@tl> 
      

  3.   

    这位大哥,最后一问,谢谢,看我这样写包对吗,包头和包体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;
      

  4.   


    还有,比如在我的包里还有很多的存储过程,在我的存储过程里可以调用这个函数吗?如果可以,怎么掉,是包名加.函数名
    (value := PROCESS_DATA.selectable('tablename'))还是直接就函数名就可以(value := selectable('tablename'))