暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 列出给定日期范围的报告

askTom 2018-07-18
271

问题描述

你好!!

我是PL SQL的新手,所以我被赋予了一个任务,通过连接两个表来开发一个过程,程序应该给出给定日期范围内的发票报告。我的程序如下。

创建表Esheet (SH_DATE date,
SHEET_NUMBER VARCHAR2 (5),
E.SHEETERS_PAY_CARD VARCHAR2 (16),
E.SHEETERS_BRANCH_NAME VARCHAR2(3),
E.SHEETERS_ACCOUNT_NUMBER VARCHAR2(11)
)

插入到Esheet值 (12/12/2012,23756,975,12345678987)
插入到Esheet值 (11/12/2012,23456,675,12045078087)
插入到Esheet值 (10/12/2012,23352,475,10305675989)

创建或替换包主体APTRN_PKG为

程序L_APTRN (
BA_SOURCE VARCHAR2默认为NULL,
BA_START_DATE VARCHAR2默认为NULL,
BA_END_DATE VARCHAR2默认为NULL,
BA_SHHET_NUMBER VARCHAR2默认为NULL,
BA_SHEETERS_PAY_CARD VARCHAR2默认为NULL,
BA_SHEETERS_BRANCH_NAME VARCHAR2默认为NULL,
BA_SHEETERS_BANK_ACC VARCHAR2默认为空
)
开始
选择
E.SH_DATE,
E、页数,
E.SHEETERS_PAY_CARD,
E.Sheeters_ 分支 _ 名称,
E.SHEETERS_ACCOUNT_NUMBER
从Esheet E
其中BA_START_DATE = & & E.SH_DATE和
BA_END_DATE = & & E.SH_DATE


结束APTRN;

专家解答

因此...

-您的create table语句不起作用

SQL> create table Esheet (SH_DATE date,
  2  SHEET_NUMBER VARCHAR2 (5),
  3  E.SHEETERS_PAY_CARD VARCHAR2 (16),
  4  E.SHEETERS_BRANCH_NAME VARCHAR2(3),
  5  E.SHEETERS_ACCOUNT_NUMBER VARCHAR2(11)
  6  );
E.SHEETERS_PAY_CARD VARCHAR2 (16),
 *
ERROR at line 3:
ORA-01748: only simple column names allowed here
复制


所以我们解决了这个问题,然后你的插入就不起作用了

SQL> create table Esheet (SH_DATE date,
  2  SHEET_NUMBER VARCHAR2 (5),
  3  SHEETERS_PAY_CARD VARCHAR2 (16),
  4  SHEETERS_BRANCH_NAME VARCHAR2(3),
  5  SHEETERS_ACCOUNT_NUMBER VARCHAR2(11)
  6  );

Table created.

SQL> insert into Esheet values(12/12/2012,23756,975,12345678987);
insert into Esheet values(12/12/2012,23756,975,12345678987)
            *
ERROR at line 1:
ORA-00947: not enough values


SQL> insert into Esheet values(11/12/2012,23456,675,12045078087);
insert into Esheet values(11/12/2012,23456,675,12045078087)
            *
ERROR at line 1:
ORA-00947: not enough values


SQL> insert into Esheet values(10/12/2012,23352,475,10305675989);
insert into Esheet values(10/12/2012,23352,475,10305675989)
            *
ERROR at line 1:
ORA-00947: not enough values
复制


我是说...来吧...当然,您可以给我们更多的东西:-(

无论如何,在 * guess * 中,您可能想做这样的事情?

create or replace 
procedure aptrn(
  ba_source varchar2 default null,
  ba_start_date varchar2 default null,
  ba_end_date varchar2 default null,
  ba_shhet_number varchar2 default null,
  ba_sheeters_pay_card varchar2 default null,
  ba_sheeters_branch_name varchar2 default null,
  ba_sheeters_bank_acc varchar2 default null
)
begin
for i in (
    select 
    e.sh_date,
    e.sheet_number,
    e.sheeters_pay_card,
    e.sheeters_branch_name,
    e.sheeters_account_number
    from esheet e
    where sh_date between ba_start_date and ba_end_date
) loop
  -- do something with each row, eg
   dbms_output.put_line(i.sheet_number);
end loop;
end; 
复制


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论