Ну, разница в том, что первая формулировка проваливается, а вторая - успешно:
SQL> begin
2 dbms_output.put_line('some text');
3 dbms_output.put('about to new_line with no parameters');
4 dbms_output.new_line;
5 end;
6 /
some text
about to new_line with no parameters
PL/SQL procedure successfully completed.
SQL> begin
2 dbms_output.put_line('some text');
3 dbms_output.put('about to new_line with a parameter');
4 dbms_output.new_line('');
5 end;
6 /
dbms_output.new_line('');
*
ERROR at line 4:
ORA-06550: line 4, column 5:
PLS-00306: wrong number or types of arguments in call to 'NEW_LINE'
ORA-06550: line 4, column 5:
PL/SQL: Statement ignored
SQL>
редактировать
Что работает, так это пустые скобки ...
SQL> begin
2 dbms_output.put_line('some text');
3 dbms_output.put('about to new_line with a parameter');
4 dbms_output.new_line();
5 end;
6 /
some text
about to new_line with a parameter
PL/SQL procedure successfully completed.
SQL>
Я не знаю, когда Oracle фактически начал отменять это соглашение, но я узнал об этом, только когда они представили OO. Некоторые функции-члены (то есть методы) в типах не будут работать, если мы не добавим пустые скобки, например, XMLType's getClobVal()
. Но квадратные скобки не являются обязательными для стандартных процедурных вызовов.