SQL Developer Oracle,如何调用程序?

dre*_*mPr 1 oracle plsql execute oracle-sqldeveloper

我有这样的delcared函数:

CREATE or replace PROCEDURE proc
(
  P_ID IN INTEGER,
  NAME OUT CHAR,
  SURNAME OUT CHAR,
  TOTAL OUT CHAR
)
 AS
    BEGIN
        SELECT NAME, SURNAME, sum(TOTAL) AS TOT
          INTO NAME,SURNAME,TOTAL
          FROM STATISTICS, PLAYERS, PERSON
          WHERE STATISTICS.SID=P_ID AND PERSON.ID=PLAYERS.SID AND      
          STATISTICS.PLAYERS_SID=PLAYERS.SID
        GROUP BY NAME,SURNAME;
END;
Run Code Online (Sandbox Code Playgroud)

Select语句有效,但如何在Oracle中调用此过程?

我试过类似的东西

EXEC proc(4);
Run Code Online (Sandbox Code Playgroud)

DECLARE
  NAME OUT CHAR,
  SURNAME OUT CHAR,
  TOTAL OUT CHAR

BEGIN
   P_ID := 12 ;
   proc (
   P_ID => P_ID,
   NAME => NAME,    
   SURNAME => SURNAME,
   TOTAL => TOTAL
);
END;
Run Code Online (Sandbox Code Playgroud)

但没有任何成功.

Lal*_*r B 5

执行程序(4);

EXECUTE是一个SQL*Plus命令.

您有以下选择:

  • SQL*Plus中的EXECUTE
  • 在匿名PL/SQL块中调用它.
  • SQL Developer客户端工具中运行

让我们看看以下三种方式:

SQL*Plus中:

SQL> variable v_ename varchar2(20);
SQL> exec get_emp(7788, :v_ename);

PL/SQL procedure successfully completed.

SQL> print v_ename;

V_ENAME
--------------------------------
SCOTT
Run Code Online (Sandbox Code Playgroud)

匿名PL/SQL块中:

SQL> CREATE OR REPLACE PROCEDURE get_emp(
  2      i_empno IN emp.empno%TYPE,
  3      o_ename OUT emp.ename%TYPE)
  4  AS
  5  BEGIN
  6    SELECT ename INTO o_ename FROM emp WHERE empno = i_empno;
  7  END;
  8  /

Procedure created.

SQL> SET serveroutput ON
SQL> DECLARE
  2    v_ename VARCHAR2(20);
  3  BEGIN
  4    get_emp(7788, v_ename);
  5    dbms_output.put_line('Employee name is '||v_ename);
  6  END;
  7  /
Employee name is SCOTT

PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)

SQL Developer客户端工具中:

  1. 转到左窗格中的连接.
  2. 展开过程.

在此输入图像描述

  1. 右键单击该过程并选择" 运行 ".

在此输入图像描述

  1. 它将打开一个新窗口,提供Input值并单击OK.

在此输入图像描述

  1. 输出将在底部的输出日志中显示为" 输出变量 ".

在此输入图像描述