SQL Developer Oracle,如何调用程序?
SQL Developer Oracle, how to call procedure?
我有这样的函数:
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;
Select 语句正常工作,但如何在 Oracle 中调用此过程?
我试过
EXEC proc(4);
和
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;
但没有成功。
EXEC proc(4);
EXECUTE 是一个 SQL*Plus
命令。
您有以下选择:
- 在 SQL*Plus
中执行
- 在匿名的PL/SQL块中调用它。
- 运行 SQL 开发者 客户端工具
让我们看看所有三种方式:
在SQL*加:
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
在一个匿名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.
在SQL开发者客户端工具中:
- 转到左侧窗格中的连接。
- 展开 程序。
- 右击过程和select“运行”。
- 它将打开一个新的window,提供输入值并单击确定。
- 输出将在底部的 Output Log 中显示为“Output Variables”。
我有这样的函数:
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;
Select 语句正常工作,但如何在 Oracle 中调用此过程?
我试过
EXEC proc(4);
和
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;
但没有成功。
EXEC proc(4);
EXECUTE 是一个 SQL*Plus
命令。
您有以下选择:
- 在 SQL*Plus 中执行
- 在匿名的PL/SQL块中调用它。
- 运行 SQL 开发者 客户端工具
让我们看看所有三种方式:
在SQL*加:
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
在一个匿名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.
在SQL开发者客户端工具中:
- 转到左侧窗格中的连接。
- 展开 程序。
- 右击过程和select“运行”。
- 它将打开一个新的window,提供输入值并单击确定。
- 输出将在底部的 Output Log 中显示为“Output Variables”。