我在plsql中或者在sqlplus中,用execute执行存贮过程,例:execute p1('001')
提示说是无效的sql语句。我看过书,也在网上搜索过,执行存贮过程的语句都是这样写的。另外,这些存贮过程本身是绝对没有问题的,因为在程序中用storedprocedure控件就可以执行。那么在plsql中,或者在一个存贮过程中调用另一个存贮过程的语句该怎么写?

解决方案 »

  1.   

    begin
       execute p1('001')
    end
      

  2.   

    还是不行
    我写成下面这样:
    begin
      execute p1('005');
    end; 
    它提示缺少immediate 
    我边上immediate后
    begin
      execute immediate p1('005');
    end;
    它又提示此范围内缺少函数p1,我又在p1前加上用户名,同样提示缺少函数p1
      

  3.   

    declare
     i int;
    begin
      p1('005');
    end;
      

  4.   

    --建立存储过程
    create or replace procedure sp_test is
    begin
      dbms_output.put_line( 'hello world' );
    end;--测试
    declare
     i int;
    begin
     sp_test;
    end;
    --输出结果
    hello world
      

  5.   

    在PL/SQL中,FILE->NEW->COMMAND WINDOWS存储过程名(参数,...);回车即可
      

  6.   

    在PL/SQL中,FILE->NEW->COMMAND WINDOWS中可以执行了
    原来是存贮过程有点问题,过程很简单,如下:
    create or replace procedure p1(id in varchar2)
      is
    begin
      update zuser set memo='ok' where userid=id;
    end p1;
    在execute p1('005')时,提示无效的数字,但当我把update zuser set memo='ok' where userid=id直接写成update zuser set memo='ok' where userid='005'时,就可以成功执行。
    不知是什么问题?
      

  7.   

    应该是参数的问题 lz先把 005赋值给一个变量 再execute使下例子如下:
    create or replace procedure p1(id in varchar2) is
    begin
      update auto set c = 'ok';
      dbms_output.put_line(id);
    end p1;
    /set serveroutput on;
    declareid varchar2(10) := '005';beginp1(id);end;
    /结果:
    005PL/SQL procedure successfully completed