我用如下语句创建了一个存储过程,执行下面这条创建语句的时候没有报任何错误
create or replace procedure course1 as select * from evaluate where score='87'但当我要执行这个存储过程的时候却提示无效的sql语句。执行语句如下
exec course1求解啊,各位大神!
plsql存储过程

解决方案 »

  1.   

    begin end都没有,这样能行吗
      

  2.   

    根本的原因是你要定义一下变量来接收SELECT查询的结果的,如何是一个集合则用游标
      

  3.   

    plsql创建过程的时候是看不到错误的,必须要edit进去才能看到错误。
      

  4.   

    show error可以看到执行的错误的
      

  5.   

    create or replace procedure course1 as 
       这里无论写什么都能创建出来一个存储过程的。
      

  6.   

    create or replace procedure course1(canshu varchar2(100)) as begin 
    select * from evaluate where grade=canshu; 
    end;这样写仍然在执行的时候提示无效的sql语句啊,谁能帮忙说一下具体怎么改吗?
      

  7.   

    create or replace procedure course1(canshu varchar2) as 
       v_count number;
    begin 
       select count(*) into v_count from evaluate where grade=canshu;
       dbms_output.put_line('有'||v_count||'条符合记录的数据'); 
    end;先把PL/SQL学明白了再写存储过程
      

  8.   

    这怎么会是存储过程呢?  存储过程的一般格式为 
    存储过程(procedure)
    语法:
    create [or replace] procedure 存储过程名字(arg1{in|out|inout} type,...,argn {in|out|inout} type)
     is|as
      定义变量、类型
    begin
     执行部分
    exception
      异常处理
    end 存储过程名;
      

  9.   


    创建存储过程传入的参数类型不能带申明字符的大小 
    就是你varchar2后面的(100)
      

  10.   

    这里exec  course的时候还是会提示无效的sql语句,求个正确的
      

  11.   

    这里exec  course的时候还是会提示无效的sql语句,求个正确的说错了,是执行exec course1的时候还是报无效的sql语句
      

  12.   

    create or replace procedure course1 as
       v_count number;
    begin
       select count(*) into v_count from evaluate where score='87';
       dbms_output.put_line('有'||v_count||'条符合记录的数据');
    end;
    SQL> exec course1;
     
    PL/SQL procedure successfully completed
     
    SQL> 
      

  13.   

    create or replace procedure course1 as
       v_count number;
    begin
       select count(1) into v_count from evaluate where score='87';
       dbms_output.put_line('有'||v_count||'条符合记录的数据');
    end;