Database PL SQL程序包,PLS-00323:子程序或游标

Database PL SQL程序包,PLS-00323:子程序或游标,database,oracle,plsql,package,plsql-package,Database,Oracle,Plsql,Package,Plsql Package,请帮帮我。我不熟悉PL SQL。我想在屏幕上显示所有这些细节 Customer.customerNo, Customer.customerName, Customer.custBalance, customerOrder.orderDate, customerOrder.orderNo 来自2个表[客户,客户订单]。使用带有过程的唯一包。请帮助我如何创建这样的包 create or replace package my_pkg as Procedure getAllOrders2(custom

请帮帮我。我不熟悉PL SQL。我想在屏幕上显示所有这些细节

Customer.customerNo, Customer.customerName, Customer.custBalance, customerOrder.orderDate, customerOrder.orderNo
来自2个表[客户,客户订单]。使用带有过程的唯一包。请帮助我如何创建这样的包

create or replace package my_pkg as
Procedure getAllOrders2(customer_id IN varchar2);
end my_pkg;
/

create or replace package body my_pkg as
Procedure getAllOrders2(customer_id IN varchar2) is
begin
dbms_output.put_line('customer_id is: '||customer_id );
end getAllOrders2;
end my_pkg;
/
输出应为:

客户编号、客户名称、订单编号、订单日期、客户余额


一个选项是使用光标
进行循环(为什么?因为客户可以有多个订单,并且-如果使用单个
select
语句-可能会出现
行数过多
错误,因此您必须选择到集合中,或者-如我的示例中-使用循环

SQL> create or replace procedure getallorders2 (par_customer_id in customer.customerno%type)
  2  is
  3  begin
  4    for cur_r in (select c.customerno,
  5                         c.customername,
  6                         c.custbalance,
  7                         o.orderdate,
  8                         o.orderno
  9                  from customer c join customerorder o
 10                    on c.customerno = o.customerno
 11                  where c.customerno = par_customer_id
 12                 )
 13    loop
 14      dbms_output.put_line
 15        (cur_r.customerno   ||', '||
 16         cur_r.customername ||', '||
 17         cur_r.custbalance  ||', '||
 18         cur_r.orderno      ||', '||
 19         to_char(cur_r.orderdate, 'dd.mm.yyyy')
 20        );
 21    end loop;
 22  end;
 23  /

Procedure created.
测试:

SQL> set serveroutput on;
SQL> begin
  2    getallorders2('A101');
  3  end;
  4  /
A101, basant, 32000, O101, 04.02.2021

PL/SQL procedure successfully completed.

SQL>

既然您知道了如何操作,请将该代码移动到包体中。

您需要CustomerOrder表做什么?“Customer details”在Customer表中……同时表示您“想要获取客户详细信息”-具体如何?你想用它们做什么?然后在屏幕上显示?输入变量?其他什么?@Littlefoot我更新了问题。