gpt4 book ai didi

一进多出Oracle Run Procedure

转载 作者:行者123 更新时间:2023-12-02 09:26:07 26 4
gpt4 key购买 nike

我刚开始使用 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")
)

然后我创建了一个过程:

 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;

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

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;

我收到这个错误:

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

( begin case declare end exception exit for goto if loop mod null pragma raise return 选择更新 while with 一个双引号的标识符06550.00000 - “行 %s,列 %s:\n%s”*原因:通常是PL/SQL编译错误。*行动:PL/SQL 过程成功完成。

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

最佳答案

这是正确的语法

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

Begin
GET_EMPLOYEE(1, x, y, z);
DBMS_OUTPUT.PUT_LINE(x);
End;

关于一进多出Oracle Run Procedure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37888223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com