1  create function function1
2  (v_num in table1.num%type,
3   v_name out number)
4   return varchar2(16)
5    is
6    v_none number(10,2);
7    begin
8    select name into v_name from table1 where num=v_num;
9    return v_name;
10   end function1;为什么我创建完成后,会提示“警告: 创建的函数带有编译错误”?

解决方案 »

  1.   

    return的v_name与第4行的类型不匹配第6行的v_none变量没有用到。
    create function function1(v_num in table1.num%type)  
    return varchar2
    is 
       v_name varchar2(16);  
    begin 
       select name into v_name from table1 where num=v_num; 
       return v_name; 
    end function1; 
      

  2.   

    5    is as 啊!
      

  3.   


    6    v_name varchar2(16);
      

  4.   


    is跟as不是等价的吗?书上的例子是:is|as说明是等价的啊?
      

  5.   

    可能是RETURN后面的参数类型不能带精度吧?像VARCHAR2这样
      

  6.   

    申明了不用没问题的
    is和as是等价的。
      

  7.   


    SQL> create or replace function function1 (
      2       v_num in employees.employee_id%type,
      3       v_name out number
      4    ) return varchar2
      5  is
      6    v_none number(10,2);
      7  begin
      8    select first_name into v_name from employees where employee_id=v_num;
      9    return v_name;
     10  end;
     11  /Function created
      

  8.   



    谢谢VARCHAR类型不是可变长的吗?为什么会出现类型不匹配呢?
      

  9.   

    v_name out number
    设置的是Number类型,但是return后面加的是varchar2