create or replace function xyz return long is
  Result long;
begin
  SELECT EXP_CODE  FROM EXP_STOCK_BALANCE;(这条报错,去掉就正常)
  Result:=1;
  return(Result);
end xyz;报错如下:Compilation errors for FUNCTION SYSTEM.XYZError: PLS-00428: an INTO clause is expected in this SELECT statement
Line: 4
Text: SELECT EXP_CODE  FROM EXP_STOCK_BALANCE;

解决方案 »

  1.   

    pl/sql块中的select 语句,必须将字段值into到一个变量中
    create or replace function xyz return long is
      Result long;
      v_exp_code  EXP_STOCK_BALANCE.EXP_CODE%type; --声明一个变量
    begin
      SELECT EXP_CODE INTO v_exp_code FROM EXP_STOCK_BALANCE;
      Result:=1;
      return(Result);
    end xyz;
      

  2.   

    注意,select ...into...只能返回一行数据,如果返回多行数据,也会出错。
    如果要有多行数据可以限制返回的行数SELECT EXP_CODE INTO v_exp_code FROM EXP_STOCK_BALANCE where rownum<2;
    --使用rownum限制只返回一行。
      

  3.   

    恩 谢谢tangren
    如果我要把函数的result显示出来怎么弄呢?因为在pl/sql dvp中new 一个 sql windows 就可以显示出select 语句
      

  4.   


    直接test这个function   画面下面就会显示结果了·
      

  5.   

    调用函数xyz
    select xyz from dual;你可以在sql window或command windows都可以
      

  6.   

    不行,不报错,但还是不显示结果
    不知道是不是我PL Devp 版本太低了
      

  7.   

    请问tangren大哥你用的什么版本的pl dvp
      

  8.   


    create or replace function xyz return long is
       Result long;
       v_exp_code EXP_STOCK_BALANCE.EXP_CODE%type; --声明一个变量
    begin
       SELECT EXP_CODE INTO v_exp_code FROM EXP_STOCK_BALANCE where rowNum = 1;
       Result:=1;
       dbms_output.put_line(v_exp_code); --打印在这里
       return(Result);
    end xyz;