Oracleで作業を開始したばかりで、アプリケーションに追加する前にSQL Developerを使用してテストしていますが、他のすべてのデータベースエンジンと一緒に作業しました。1つのパラメータと複数の出力パラメータを持つ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:記号「エンドオブファイル」は、以下のいずれかを期待するときに発生しました:
(場合を開始ループMODならジャンプの終了例外出口を宣言する nullプラグマ・レイド・リターン選択更新中に 識別子を二重引用符で囲んだ 06550. 00000 - "行%s、列%s:\ n%s" *原因:通常はPL/SQLコンパイル・エラーです。 *処置: PL/SQLプロシージャが正常に完了しました。
SQL Developerで動作させるためのプロシージャの呼び出しを変更する方法がわかりません。どんな助けでも大歓迎です。
この行置換: 'EXEC GET_EMPLOYEE(1:X:Y:Z)を、単に' GET_EMPLOYEE(1、X、Y、Z)と ';' - 'exec'、すべてコロンを削除。最後の ''; ''の後に '/'を付ける。 – krokodilko