Oracle 过程参数确定嵌套的过程参数

Oracle 过程参数确定嵌套的过程参数,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我想写一个程序,获取发票号码,然后输出购买该特定产品的客户的详细信息 我有一个程序,使用id号作为参数来显示客户的详细信息,而且效果很好 我不知道如何使用发票号来确定客户程序的ID值 我正在使用Oracle、sql plus 代码: 客户详细信息程序: 当前查询: 提前谢谢 编辑: 我已经计算出,当我在我想调用的过程中放置一个ID号时,例如custdets(4),它会用该号码的ID打印出客户。这与他们是否购买无关。发票号应该是名为INVOICES maybe的表的主键,我不知道?这是你的模式,你

我想写一个程序,获取发票号码,然后输出购买该特定产品的客户的详细信息

我有一个程序,使用id号作为参数来显示客户的详细信息,而且效果很好

我不知道如何使用发票号来确定客户程序的ID值

我正在使用Oracle、sql plus

代码: 客户详细信息程序: 当前查询: 提前谢谢

编辑:
我已经计算出,当我在我想调用的过程中放置一个ID号时,例如custdets(4),它会用该号码的ID打印出客户。这与他们是否购买无关。

发票号应该是名为INVOICES maybe的表的主键,我不知道?这是你的模式,你比我们更清楚。无论如何,该表应该有一个名为
C\u ID
的列,或者可能是
customer\u ID
的列,这是正在开具发票的客户的ID;该列是CUSTOMERS表的外键

因此,新过程必须将发票ID作为参数。使用该值查找发票记录。这将为您提供C_ID,以便传递到现有的
custdets()
过程中,并显示客户详细信息

“它们都在同一个表中如何将其传递给custdets()”

大概是这样的:

CREATE OR REPLACE PROCEDURE SalePurchase(
      in_invoice IN sales_purchases.sp_invoice%TYPE)
IS          
    l_customer_id  sales_purchases.c_id%type;           
BEGIN  
    select c_id into l_customer_id
    from sales_purchases
    where sp_invoice = in_invoice;
    custdets(l_customer_id);
END;

您使用的是哪种数据库管理系统?(该代码是特定于产品的。)@jarlh-ummm-Oracle,sql-plus新过程已将发票ID号作为参数,如发票中所示。你是说我必须把发票放在custdets()的括号里吗?不。你需要使用发票ID在发票表中查找记录。我的假设是,您有一个INVOICES表,该表具有CUSTOMER_ID。但这是您的数据模型:我实际上无法看到您有哪些表或它们的结构。你必须自己解决这个问题。但是,一旦您拥有发票的客户ID,您需要将其传递给
custdets()
。发票ID称为sp\u invoice,并位于sales\u purchases表中。客户ID称为c_ID,是sales_purchases表中的forigen键。因此,它们都在同一个表中。如何将其传递给custdets()?
CREATE OR REPLACE PROCEDURE SalePurchase(in_invoice IN sales_purchases.sp_invoice%TYPE)
IS                      
BEGIN                     
    DBMS_OUTPUT.PUT_LINE('###########################################');
    DBMS_OUTPUT.PUT_LINE('# P U R H A S E - S A L E - S U M M A R Y #');
    DBMS_OUTPUT.PUT_LINE('#         INVOICE NO: ' || in_invoice || '           #');
    DBMS_OUTPUT.PUT_LINE(chr(13)); 
    DBMS_OUTPUT.PUT_LINE('###########################################');
    DBMS_OUTPUT.PUT_LINE(CHR(13));
    DBMS_OUTPUT.PUT_LINE('############################################');
    custdets();
end;
/
CREATE OR REPLACE PROCEDURE SalePurchase(
      in_invoice IN sales_purchases.sp_invoice%TYPE)
IS          
    l_customer_id  sales_purchases.c_id%type;           
BEGIN  
    select c_id into l_customer_id
    from sales_purchases
    where sp_invoice = in_invoice;
    custdets(l_customer_id);
END;