create or replace procedure p_sl is
declare v_name varchar2(20);
begin
select name into v_name from p_test where name='&name';
end;
哪里有错误

解决方案 »

  1.   

    create or replace procedure p_sl is
    v_name varchar2(20);
    begin
    select ename into v_name from emp where ename='&name';
    DBMS_OUTPUT.PUT_LINE(v_name);
    end;
      

  2.   

    在这里 放where ename='&name';有什么意义
    做个入参咋了
      

  3.   

    呵呵,你是在写存储过程,不是在sqlplus里写匿名块,&这种不要用了.
      

  4.   


    create or replace procedure p_sl is
    v_name varchar2(20);
    begin
    select name into v_name from p_test where name='&name';
    end;
    --或者这样create or replace procedure p_sl(name1 p_test.name%type) is
    v_name varchar2(20);
    begin
    select name into v_name from p_test where name=name1;
    end;
      

  5.   

    既然是过程,就不要用create or replace procedure p_sl is 这句了,如果是存储过程的话,那应该是传参,像这样
    create or replace procedure p_sl(E_name VARCHAR2) 
    is
    declare
         v_name varchar2(20);
        begin
       select name into v_name from p_test where name=E_name;
       end;
      

  6.   

    is 后面就是定义的变量嘛~不用declare
      

  7.   

     恩有两种方法:
    一:
    declare
    v_name varchar2(20);
    begin
    select name into v_name from p_test where name='&name';
    end;
    二:
    create or replace procedure p_sl is
    v_name varchar2(20);
    begin
    select name into v_name from p_test where name='&name';
    end;还有注意 select name from p_test where name='&name';返回的结果只能有一笔记录哦
      

  8.   

    sql>create or replace procedure p_sl(name1 p_test.name%type)
      1 is
      2 v_name varchar2(20)
      3 begin
      4 select name into v_name from p_test where name=name1;
      5 end;
      6 /
      

  9.   

    create or replace procedure p_sl(
     n_name in  varchar2,
     v_name out varchar2)
    begin
    select name into v_name from p_test where name=n_name;
    end;
      

  10.   

    create or replace procedure p_sl is
    v_name varchar2(20);
    begin
    select name into v_name from p_test where name='&name';
    end;
    为什么好多人都支持这个写法  这样编译出来是什么 有人瞧过么
      

  11.   

    呵呵,我试了
    在pl/sql里是跳出个小窗口让你输入参数值,输入什么,就存储过程中就用什么代替了
      

  12.   

    create or replace procedure p_sl(name1 p_test.name%type)
      1 is
      2 v_name varchar2(20)
      3 begin
      4 select name into v_name from p_test where name=name1;
      5 end;
      6 /
      

  13.   

    选择入参吧,过程中最好不要有&这个东西,把declare去掉