【发布时间】:2016-02-28 03:09:20
【问题描述】:
我有这样的功能:
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;
但没有任何成功。
【问题讨论】:
-
你是否也提供了 out 参数?
-
尝试匿名块:
BEGIN proc(4); END; -
@DmitryBychenko 不仅如此,您还需要参数。
-
您遇到什么错误?您的程序只是获取姓名 surname 和 total 而对它们不做任何事情。例如,您可以使用 dbms_output 将它们打印到输出。 (您需要在会话的 View 菜单中激活 sqldeveloper 中的 dbms_output 才能看到实际的输出)
-
您的 PL/SQL 块有语法错误,无法工作。
IN/OUT用于参数而不是局部变量。
标签: oracle plsql oracle-sqldeveloper execute