【问题标题】:How to execute SP with arguments 'table of foo'?如何使用参数“foo 表”执行 SP?
【发布时间】:2011-09-30 01:07:44
【问题描述】:

使用 sqlplus 如何执行具有“foo 表”参数的存储过程?

例如,在以下包中,我如何执行 'Get_AnnotationsForEmp' ?

create or replace PACKAGE "PKG_DROM"   as
    TYPE tblCostCentreIdentifier    IS TABLE OF BLA_COST_CENTRE.CCE_IDENTIFIER%TYPE INDEX BY BINARY_INTEGER;
    TYPE tblCCEAutoID       IS TABLE OF BLA_COST_CENTRE.CCE_AUTOID%TYPE INDEX BY BINARY_INTEGER;

    --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    --
    --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    PROCEDURE Get_AnnotationsForEmp(
        EMP_EMPLOYEE_ID_IN      IN BLA_EMPLOYEE.EMP_EMPLOYEE_ID%TYPE,
        CCE_IDENTIFIER_OUT  OUT tblCostCentreIdentifier,
        CCE_AUTOID_OUT      OUT tblCCEAutoID);

    PROCEDURE Get_PastAnnotationsForEmp(
        EMP_EMPLOYEE_ID_IN      IN BLA_EMPLOYEE.EMP_EMPLOYEE_ID%TYPE,
        CCE_IDENTIFIER_OUT  OUT tblCostCentreIdentifier,
        CCE_AUTOID_OUT      OUT tblCCEAutoID);
END PKG_DROM;

如果程序在包'BAR'中并且看起来像这样......

PROCEDURE FOO (ID IN NUMBER);

...然后我知道我可以像这样执行它:

declare
    r number;
begin
    r := BAR.FOO (1);
end;

但是我怎样才能扩展这个想法以适应“表”的 OUT 参数?

【问题讨论】:

    标签: oracle stored-procedures plsql arguments sqlplus


    【解决方案1】:

    通过使用 package.type 语法声明变量:

    DECLARE
      outTBL     PKG_DROM.tblCostCenereIdentifier;
      outAutoTBL PKG_DROM.tblCCEAutoID;
    BEGIN
      PKG_DROM.GET_AnnotationsForEmp(id, outTBL, outAutoTBLZ);
    END;
    

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 2016-06-06
      • 1970-01-01
      • 2017-12-25
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      相关资源
      最近更新 更多