带有一个输入参数和多个输出参数的 Oracle 运行过程

Mic*_*ely 3 oracle plsql stored-procedures

我刚开始使用 Oracle,在开始向应用程序添加内容之前,我使用 SQL Developer 进行测试,但我遇到了问题,因为 Oracle 的行为与我使用过的所有其他数据库引擎都不同。

我创建了一个虚拟表:

CREATE TABLE "ROOT"."EMPLOYEES" 
(   "ID" NUMBER NOT NULL ENABLE, 
"FIRSTNAME" VARCHAR2(30 BYTE) NOT NULL ENABLE, 
"LASTNAME" VARCHAR2(30 BYTE) NOT NULL ENABLE, 
"EMAIL" VARCHAR2(40 BYTE) NOT NULL ENABLE, 
 CONSTRAINT "EMPLOYEES_PK" PRIMARY KEY ("ID")
)
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个程序:

 create or replace PROCEDURE get_employee
(
  emp_id IN NUMBER,
  m_FirstName OUT Varchar2,
  m_LastName OUT Varchar2,
  m_Email OUT Varchar2
)
AS
BEGIN
SELECT 
   FirstName
   ,LastName
   ,Email
INTO
   m_FirstName,
   m_LastName,
   m_Email
FROM EMPLOYEES
WHERE
  ID = emp_id;
END get_employee;
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试运行该过程时出现编译错误:

Declare x VARCHAR2(30);
y VARCHAR2(30);
z VARCHAR2(40);

Begin
exec GET_EMPLOYEE(1, :x, :y, :z);
SYS.DBMS_OUTPUT.PUT_LINE(x);
End; 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ORA-06550:第 8 行,第 4 列:PLS-00103:在预期以下情况之一时遇到符号“文件结束”:

( begin case declare end exception exit for goto if loop mod null pragma raise return select update while with an identifier a double-quoted 06550. 00000 - "line %s, column %s:\n%s" *Cause: 通常是 PL /SQL 编译错误。*操作:PL/SQL 过程成功完成。

我真的不知道如何更改我对过程的调用以使其与 SQL Developer 一起使用。任何帮助将不胜感激。

kev*_*sky 5

这是正确的语法

Declare 
x VARCHAR2(30);
y VARCHAR2(30);
z VARCHAR2(40);

Begin
GET_EMPLOYEE(1, x, y, z);
DBMS_OUTPUT.PUT_LINE(x);
End;
Run Code Online (Sandbox Code Playgroud)