%ROWTYPE创建pl / sql过程时出现的问题

幽灵骑士

我在创建执行操作的过程时遇到问题。基本上我有两个表,一个是收入表,另一个是RECURRINGTRANSACTION。我打算在oracle 11g中创建一个每天执行一个程序的作业。该过程将具有开始日期,结束日期和发生次数,因此我的过程应检查开始日期是否为今天的日期和发生次数!= 0,然后应在我的第一个表INCOME表中插入一行。以下是我的表格说明和数据。在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

create or replace procedure recurTransDaily(currTransID in number)
is

  type r_currentTransRow is record(
   RECTRANSACTIONID RECURRINGTRANSACTION.RECTRANSACTIONID%TYPE,
   AMOUNT RECURRINGTRANSACTION.AMOUNT%TYPE,
   DESCRIPTION RECURRINGTRANSACTION.DESCRIPTION%TYPE,
   ISEXPENSE RECURRINGTRANSACTION.ISEXPENSE%TYPE,
   ISINCOME RECURRINGTRANSACTION.ISINCOME%TYPE,
   NOOFOCCURENSES RECURRINGTRANSACTION.NOOFOCCURENSES%TYPE,
   TRANSACTIONDATE RECURRINGTRANSACTION.TRANSACTIONDATE%TYPE,
   TRANSSACTIONENDDATE RECURRINGTRANSACTION.TRANSSACTIONENDDATE%TYPE,
   CATEGORYID RECURRINGTRANSACTION.CATEGORYID%TYPE,
   PAYEEID RECURRINGTRANSACTION.PAYEEID%TYPE,
   RECURRINGTRANSACTIONTYPE     RECURRINGTRANSACTION.RECURRINGTRANSACTIONTYPE%TYPE,
   PERSONID RECURRINGTRANSACTION.PERSONID%TYPE);


BEGIN
   select *
   into r_currentTransRow
   from RECURRINGTRANSACTION where RECTRANSACTIONID=currTransID;

 if to_char(r_currentTransRow.TRANSACTIONDATE,'MM-dd- yyyy')=to_char(sysdate,'MM-dd-yyyy') then
 -- insert a record into income table
    insert into   income(AMOUNT,DESCRIPTION,TRANSACTIONDATE,CATEGORYID,PAYEEID,PERSONID) values
  (r_currentTransRow.AMOUNT,r_currentTransRow.DESCRIPTION,r_currentTransRow.TRANSACTIONDATE,
   r_currentTransRow.CATEGORYID,r_currentTransRow.PAYEEID,r_currentTransRow.PERSONID);

    -- update the present RECURRINGTRANSACTION row with TRANSACTIONDATE=sysdate+1 and NOOFOCCURENSES=NOOFOCCURENSES-1
   update RECURRINGTRANSACTION set  RECURRINGTRANSACTION.TRANSACTIONDATE=to_char(sysdate+1,'MM-dd-yyyy'),
        RECURRINGTRANSACTION.NOOFOCCURENSES=r_currentTransRow.NOOFOCCURENSES-1 
             WHERE   RECURRINGTRANSACTION.RECTRANSACTIONID=r_currentTransRow.RECTRANSACTIONID;
   commit;
 end if;
 END;

如果执行上述脚本,则会出现以下错误。我是PL / SQL的新手。有人可以解释这些错误的含义以及解决这些错误的方法吗在此处输入图片说明

阿夫拉吉特·罗伊(Avrajit Roy)

/ *您好,您可以尝试以下代码段。由于我现在没有工作区,因此可能包含语法错误。让我知道是否有帮助。* /

CREATE OR REPLACE PROCEDURE recurTransDaily(
    currTransID IN NUMBER)
IS
type r_currentTransRowrcrd
IS
  record
  (
    RECTRANSACTIONID RECURRINGTRANSACTION.RECTRANSACTIONID%TYPE,
    AMOUNT RECURRINGTRANSACTION.AMOUNT%TYPE,
    DESCRIPTION RECURRINGTRANSACTION.DESCRIPTION%TYPE,
    ISEXPENSE RECURRINGTRANSACTION.ISEXPENSE%TYPE,
    ISINCOME RECURRINGTRANSACTION.ISINCOME%TYPE,
    NOOFOCCURENSES RECURRINGTRANSACTION.NOOFOCCURENSES%TYPE,
    TRANSACTIONDATE RECURRINGTRANSACTION.TRANSACTIONDATE%TYPE,
    TRANSSACTIONENDDATE RECURRINGTRANSACTION.TRANSSACTIONENDDATE%TYPE,
    CATEGORYID RECURRINGTRANSACTION.CATEGORYID%TYPE,
    PAYEEID RECURRINGTRANSACTION.PAYEEID%TYPE,
    RECURRINGTRANSACTIONTYPE RECURRINGTRANSACTION.RECURRINGTRANSACTIONTYPE%TYPE,
    PERSONID RECURRINGTRANSACTION.PERSONID%TYPE);
TYPE lv_tab
IS
  TABLE OF r_currentTransRowrcrd;
  r_currentTransRow lv_tab;
BEGIN

  EXECUTE IMMEDIATE 'ALTER SESSION set nls_timestamp_format = ''DD-MON-YY HH24:MI:SS.FF6''';
  EXECUTE IMMEDIATE 'ALTER SESSION set nls_date_format = ''DD-MON-YY''';

  SELECT * BULK COLLECT
  INTO r_currentTransRow
  FROM RECURRINGTRANSACTION
  WHERE RECTRANSACTIONID =currTransID;

  FOR I IN r_currentTransRow.FIRST..r_currentTransRow.LAST

  LOOP
    IF TO_CHAR(TO_TIMESTAMP(r_currentTransRow(i).TRANSACTIONDATE,'DD-MON-YY HH24:MI:SS.FF6'),'DD-MON-YY') = to_char(sysdate,'DD-MON-YY') THEN
      -- insert a record into income table

      INSERT
      INTO income
        (
          AMOUNT,
          DESCRIPTION,
          TRANSACTIONDATE,
          CATEGORYID,
          PAYEEID,
          PERSONID
        )
        VALUES
        (
          r_currentTransRow(i).AMOUNT,
          r_currentTransRow(i).DESCRIPTION,
          r_currentTransRow(i).TRANSACTIONDATE,
          r_currentTransRow(i).CATEGORYID,
          r_currentTransRow(i).PAYEEID,
          r_currentTransRow(i).PERSONID
        );
      -- update the present RECURRINGTRANSACTION row with TRANSACTIONDATE=sysdate+1 and NOOFOCCURENSES=NOOFOCCURENSES-1
      UPDATE RECURRINGTRANSACTION
      SET RECURRINGTRANSACTION.TRANSACTIONDATE   =SYSTIMESTAMP+1,
        RECURRINGTRANSACTION.NOOFOCCURENSES      =r_currentTransRow(i).NOOFOCCURENSES-1
      WHERE RECURRINGTRANSACTION.RECTRANSACTIONID=r_currentTransRow(i).RECTRANSACTIONID;

      COMMIT;
    END IF;
  END LOOP;
END;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建存储过程时出现问题

来自分类Dev

PL / SQL:遍历%ROWTYPE中的属性

来自分类Dev

创建临时表存储过程时出现我的SQL错误

来自分类Dev

创建过程Oracle SQL Developer时出现异常错误

来自分类Dev

尝试使用 %ROWTYPE 在 Oracle PL/SQL 中的不同模式中建立表格时出错

来自分类Dev

PL / SQL:忽略SQL语句-创建过程出现编译错误

来自分类Dev

尝试通过PL / SQL过程设置NLS_CALENDAR时出现ORA-02248

来自分类Dev

在BEGIN..END过程PL / SQL中声明变量时出现编译错误

来自分类Dev

在BEGIN..END过程PL / SQL中声明变量时出现编译错误

来自分类Dev

创建 mysql 过程时出现错误 1064

来自分类Dev

在Visual Studio 15中创建存储过程时出现SQL46010语法错误

来自分类Dev

如何解决我尝试创建此过程时出现的错误“ERROR 102 sql state 420000”

来自分类Dev

是否可以在PL SQL过程中创建本地视图?

来自分类Dev

PL / SQL-尝试创建一个简单的过程

来自分类Dev

在Oracle pl / sql中使用插入语句创建过程

来自分类Dev

在创建过程pl sql中返回布尔值

来自分类Dev

创建带有更改时间戳的PL / SQL过程

来自分类Dev

PL / SQL-尝试创建一个简单的过程

来自分类Dev

在PL / SQL中创建触发器时出现编译错误

来自分类Dev

PL / SQL:无法将表%ROWTYPE转换为用户定义的TYPE TABLE。但是没有错误

来自分类Dev

我的PL / SQL过程出了什么问题?

来自分类Dev

创建分支时出现git套管问题

来自分类Dev

创建节点时指针出现C ++问题

来自分类Dev

创建XlsxWriter图表时出现的问题

来自分类Dev

Android:创建目录时出现问题

来自分类Dev

创建 Jenkins Pipeline 时出现 Maven 问题

来自分类Dev

尝试在mysql中创建过程时出现语法错误

来自分类Dev

创建存储过程时出现MySQL错误#1064

来自分类Dev

使用Perl脚本创建mysql存储过程时遇到的问题

Related 相关文章

  1. 1

    创建存储过程时出现问题

  2. 2

    PL / SQL:遍历%ROWTYPE中的属性

  3. 3

    创建临时表存储过程时出现我的SQL错误

  4. 4

    创建过程Oracle SQL Developer时出现异常错误

  5. 5

    尝试使用 %ROWTYPE 在 Oracle PL/SQL 中的不同模式中建立表格时出错

  6. 6

    PL / SQL:忽略SQL语句-创建过程出现编译错误

  7. 7

    尝试通过PL / SQL过程设置NLS_CALENDAR时出现ORA-02248

  8. 8

    在BEGIN..END过程PL / SQL中声明变量时出现编译错误

  9. 9

    在BEGIN..END过程PL / SQL中声明变量时出现编译错误

  10. 10

    创建 mysql 过程时出现错误 1064

  11. 11

    在Visual Studio 15中创建存储过程时出现SQL46010语法错误

  12. 12

    如何解决我尝试创建此过程时出现的错误“ERROR 102 sql state 420000”

  13. 13

    是否可以在PL SQL过程中创建本地视图?

  14. 14

    PL / SQL-尝试创建一个简单的过程

  15. 15

    在Oracle pl / sql中使用插入语句创建过程

  16. 16

    在创建过程pl sql中返回布尔值

  17. 17

    创建带有更改时间戳的PL / SQL过程

  18. 18

    PL / SQL-尝试创建一个简单的过程

  19. 19

    在PL / SQL中创建触发器时出现编译错误

  20. 20

    PL / SQL:无法将表%ROWTYPE转换为用户定义的TYPE TABLE。但是没有错误

  21. 21

    我的PL / SQL过程出了什么问题?

  22. 22

    创建分支时出现git套管问题

  23. 23

    创建节点时指针出现C ++问题

  24. 24

    创建XlsxWriter图表时出现的问题

  25. 25

    Android:创建目录时出现问题

  26. 26

    创建 Jenkins Pipeline 时出现 Maven 问题

  27. 27

    尝试在mysql中创建过程时出现语法错误

  28. 28

    创建存储过程时出现MySQL错误#1064

  29. 29

    使用Perl脚本创建mysql存储过程时遇到的问题

热门标签

归档