查一下其它毛病吧,可以用insert,你可以只在里面写一个insert语句测试。

解决方案 »

  1.   

    test表只有2列,这个是没有错的。to skystar99047(天星) 
    你确定在函数内部可以用insert语句?
      

  2.   

    to LinZhongBao(【豹哥】) 
    那为什么我把 insert into test values(appkey,namec); 注释掉,
    这个函数就执行正常,
    否则老是返回-99,(表示出错)。注意,我以脚本的方式执行 insert into test values(appkey,namec); 是正常的。
      

  3.   

    会不会是nvarchar2与varchar2的匹配问题?建议改成varchar2试试
      

  4.   

    如果我用如下的‘脚本方式’来执行,就OK
    declare a number;
    begin
     a:=fun_test('kk');
     dbms_output.PUT_LINE(a);
    end;但是,如果执行以下的查询语句,就返回-99
    select fun_test('kk') from dual;请问,这是为什么?
      

  5.   

    有更新操作的函数,不能用select调用
      

  6.   

    TO lixin5678(li) 那么,我要怎么调用,又如何才能获取结果?
      

  7.   

    函数里面只有insert
    没有commit(提交)?
      

  8.   

    当然可以用CREATE OR REPLACE FUNCTION Fun_Test(app_key varchar2) RETURN NUMBER IS
    tmpVar NUMBER;appkey nvarchar2(50);
    namec nvarchar2(500);
    ncount number(10);
    BEGIN
    tmpVar := 0;
    select count(*) into ncount from city where city_no=app_key;
    if ncount=1 then 
    select city_no,name_c into appkey,namec from city where city_no = app_key;insert into test values(appkey,namec);RETURN 1;
    else
      return 2;
    end if;
    EXCEPTION
    WHEN OTHERS THEN
    return -99;
    END Fun_Test;