PROCEDURE 样本(p_num1 IN TABLE%TYPE,p_num2 OUT NUMBER)是
或者
PROCEDURE 示例(p_num1 IN TABLE%TYPE,p_num2 OUT NUMBER)AS
在包规范中,函数名称仅出现一次,因此它不会重载。在包体中,相同的函数名称使用不同的参数集出现两次。其中之一的参数与封装规格中的参数相同。我的问题是,包体中的“第一个 func”是否实际被调用,如果是,它到底在做什么?它正试图回归自己。
--package specification
CREATE OR REPLACE
PACKAGE jtestpkg
IS
FUNCTION testfunc(p_num IN NUMBER, p_out1 IN out varchar2, p_out2 IN out varchar2)
RETURN NUMBER;
END jtestpkg;
--package body
CREATE OR REPLACE
PACKAGE BODY jtestpkg
IS
--first func
function testfunc
(p_num IN NUMBER,
p_out1 IN OUT varchar2)
return number is
v_out2 varchar2(50);
BEGIN
dbms_output.put_line('invoking first func');
RETURN testfunc(
p_num,
p_out1,
v_out2);
END;
--second func
FUNCTION testfunc(
p_num IN NUMBER,
p_out1 IN OUT varchar2,
p_out2 IN OUT varchar2)
RETURN NUMBER
IS
v_num …Run Code Online (Sandbox Code Playgroud) 我正在创建一个 Oracle 包,我想知道是否可以将 prcedure 设为私有,这是我的示例代码:
CREATE OR REPLACE PACKAGE MYSCHEMA.MyPackage AS
PROCEDURE MyProcedureA(outputParam OUT VARCHAR2);
PROCEDURE MyProcedureB(inputParam IN VARCHAR2);
END MyPackage;
/
CREATE OR REPLACE PACKAGE BODY MYSCHEMA.MyPackage AS
PROCEDURE MyProcedureA(outputParam OUT VARCHAR2) AS
myHello VARCHAR2(1000) := 'Hello';
BEGIN
MyProcedureB(myHello);
outputParam := 'OK';
END MyProcedureA;
PROCEDURE MyProcedureB(inputParam IN VARCHAR2) AS
myWorld VARCHAR2(1000) := 'World';
BEGIN
dbms_output.put_line(inputParam || myWorld);
END MyProcedureB;
END MyPackage;
Run Code Online (Sandbox Code Playgroud)
是否可以将 MyProcedureB 设为“私有”,我的意思是它只能由包 (MyProcedureA) 中的其他程序调用?