[英]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.