简体   繁体   English

pl/sql 中带参数的过程

[英]Procedure with parameters in pl/sql

Why this procedure after adding parameters is not working?为什么添加参数后这个程序不起作用?

No need for IN OUT parameters;无需IN OUT参数; IN would suffice (because of PLS_00363: SYSDATE can't be used as an assignment target while calling the procedure). IN就足够了(因为 PLS_00363: SYSDATE 在调用过程时不能用作分配目标)。

As you're manipulating parameters' values, I declared local variables for that purpose.当您操作参数的值时,我为此目的声明了局部变量。

Also, next_day won't work with 7 ;此外, next_day不适用于7 use day name (hence my alter session to set language to English so that I could use SUNDAY as day name).使用日期名称(因此我的alter session将语言设置为英语,以便我可以使用SUNDAY作为日期名称)。

(Didn't we already discuss that? Where did your previous question go? Right, here it is: Function Next_Day in pl/sql ; why did you create another account?) (我们不是已经讨论过了吗?您之前的问题 go 是在哪里?对,这里是: Function Next_Day in pl/sql ;为什么要创建另一个帐户?)

When fixed:固定时:

SQL> CREATE OR REPLACE PROCEDURE liczba_niedziel (data_od  IN DATE,
  2                                               data_do  IN DATE)
  3  IS
  4     l_data_od  DATE;
  5     l_data_do  DATE;
  6     licznik    NUMBER := 0;
  7  BEGIN
  8     l_data_od := NEXT_DAY (data_od, 'SUNDAY');
  9     l_data_do := data_do;
 10
 11     WHILE l_data_od <= l_data_do
 12     LOOP
 13        l_data_od := l_data_od + 7;
 14        licznik := licznik + 1;
 15     END LOOP;
 16
 17     DBMS_OUTPUT.put_line (
 18        '...' || SYSDATE || ' - ' || l_data_do || '...' || licznik);
 19  END;
 20  /

Procedure created.

Testing:测试:

SQL> ALTER SESSION SET nls_date_language = 'english';

Session altered.

SQL> EXEC liczba_niedziel(sysdate, date '2022-01-18');
...30.12.2021 - 18.01.2022...3

PL/SQL procedure successfully completed.

SQL>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM