簡體   English   中英

PL/SQL package - 在 package 中調用過程

[英]PL/SQL package - calling a procedure within a package

我是一個 pl/sql 初學者,試圖了解如何在同一個 package 中調用過程。 這是一個樣品 package 主體,帶有 2 個程序。 首先是用於創建員工,其次是在 emp_id 不為空時創建員工卡。 您能否建議我如何在下面的 if 語句塊中進行操作?

非常感謝!

create or replace PACKAGE BODY sample_package
IS
PROCEDURE create_employee(
    emp_id IN OUT VARCHAR2,
    emp_name IN VARCHAR2,
    emp_surname IN VARCHAR2)
IS
BEGIN
    schema.package.procedure(
        emp_id,
        emp_name,
        emp_surname
    );

    IF (emp_id != null) THEN
        --how do I call procedure create_id_card
    END IF;
END;

PROCEDURE create_id_card(
    card_id IN OUT VARCHAR2,
    card_name IN VARCHAR2)
IS
BEGIN
    schema.package.procedure(
        card_id,
        card_name
    );
END;
END sample_package;

就如此容易:

IF (emp_id is not null) THEN
    --how do I call procedure create_id_card
    create_id_card(parameter1, parameter2);
END IF;

由於這兩個程序都在同一個 package 中,因此您無需執行任何操作(在其名稱前加上 package 或所有者名稱,如果這就是您的意思)。

我不知道您實際傳遞了哪些參數,所以我將它們命名為parameter_x

您必須找到一種在過程 create_employee 中傳遞變量 card_id 和 card_name 的方法,如下所示

  PROCEDURE create_employee(
 emp_id IN OUT VARCHAR2,
 emp_name IN VARCHAR2,
 emp_surname IN VARCHAR2)
 IS
 l_card_id VARCHAR2(100);
 l_card_name VARCHAR2(255);
 BEGIN
schema.package.procedure(
    emp_id,
    emp_name,
    emp_surname
);

l_card_name:=emp_name;

IF emp_id is not null THEN
    create_id_card(l_card_id, l_card_name);
END IF;
END;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM