各位,请教:
执行存储过程:
CREATE OR REPLACE PROCEDURE sp1(s1 VARCHAR2) AS
BEGIN
   select * from gl_vou_head
   where co_code=:s1;
END sp1;--------
命令行中运行:
SQL> set serverout on;
SQL> exec stock_agent('aa','10122');
 
begin stock_agent('aa','10122'); end;
 
ORA-06550: 第 2 行, 第 7 列: 
PLS-00905: 对象 TEST.STOCK_AGENT 无效
ORA-06550: 第 2 行, 第 7 列: 
PL/SQL: Statement ignored
请问是什么问题,谢谢。

解决方案 »

  1.   

    SQL> exec stock_agent('aa','10122');有这个过程吗?还有你上面写的过程sp1也是有问题的,查询出来的数据要存到哪呢?
      

  2.   

    select 字段名 into var_X from gl_vou_head
       where co_code=:s1;
      

  3.   

    create or replace function AAA99(a1 in varchar2)
      RETURN types.cursorTypes IS
      resultSet types.cursorTypes;BEGIN
     BEGIN   INSERT INTO admin_work_area 
      SELECT aa1,aa2 FROM gr where gg=a1;
     END;
      --返回结果集
      OPEN resultSet FOR
      select g1,g2 from admin_work_area;
      RETURN resultSet;
      CLOSE resultSet;
    END AAA99;
    -----------PL-SQL命令窗口执行--
    SQL> set serverout on;
    SQL> call AAA99(2009);
     
    call AAA99(2009)
     
    ORA-06576: 不是有效的函数或过程名
     
    什么原因呢?
      

  4.   

    有返回值的函数,需要这样调用:
    set serverout on;
    declare
      vs_return_buf varchar2(10) ;
    begin
      select AAA99('2009') into vs_return_buf from dual;
    end;
      

  5.   

    create or replace function AAA99(a1 in varchar2)varchar2(n) 必须指明长度的