Oracle Pl/sql执行过程

Oracle Pl/sql执行过程,oracle,plsql,Oracle,Plsql,我对PL/SQL一无所知 create or replace procedure p1(a in customer.id%type, b out customer.name%type, c out customer.dept%type) is begin select name,dept into b,c from customer where id=a; end; 它的创建是正确的。 但我不知道如何执行它。 执行官p1(1); 但这显示了错误。执行过程有两种方法 DECLARE

我对PL/SQL一无所知

create or replace procedure p1(a in customer.id%type,
b out  customer.name%type,
c out  customer.dept%type)
is
 begin
 select name,dept into b,c from customer where id=a;
  end;
它的创建是正确的。 但我不知道如何执行它。 执行官p1(1);
但这显示了错误。

执行过程有两种方法

DECLARE
  l_id    customer.id%type := 1;
  l_name  customer.name%type;
  l_dept  customer.dept%type;
BEGIN
  p1( l_id, l_name, l_dept );
  <<do something with l_name and l_dept>>
END;
/
  • 从SQL提示符

    执行[或执行]程序名称

  • 在另一个过程中–只需使用过程名称

    程序名称


  • 该过程有3个参数,不能像调用p1(1)那样只使用一个参数

    在你的情况下,试试这样

    DECLARE
      p_name        customer.name%type;
      p_department  customer.dept%type;
    BEGIN
      p1(1, p_name, p_department);
    END;
    

    您的过程有三个参数,因此需要使用三个参数调用它。在
    OUT
    参数的情况下,需要传入变量,这些变量将保存过程返回的值

    DECLARE
      l_id    customer.id%type := 1;
      l_name  customer.name%type;
      l_dept  customer.dept%type;
    BEGIN
      p1( l_id, l_name, l_dept );
      <<do something with l_name and l_dept>>
    END;
    /
    
    声明
    l_id客户。id%类型:=1;
    l_name客户。name%类型;
    l_部门客户。部门%类型;
    开始
    p1(后勤id、后勤名称、后勤部门);
    结束;
    /
    
    输出参数应存储在变量中。 输入,可以是变量,也可以直接在() 使用dbms_output.put_行可以轻松地在IDE中显示输出

    DECLARE
       p_name        customer.name%type;
       p_department  customer.dept%type;
       p_id          customer.id%type := 1;
    BEGIN
       p1(p_id, p_name, p_department);
    END;
    

    错误是什么?你在哪里执行它?这个过程有3个参数,你不能用p1(1)(1个参数)调用它