【发布时间】:2013-12-06 10:52:22
【问题描述】:
什么是我们在UTL_TCP使用示例中经常看到的操作符“=>”?
如http://www.oracle-base.com/articles/misc/ftp-from-plsql.php
l_conn := ftp.login('ftp.company.com', '21', 'ftpuser', 'ftppassword');
ftp.ascii(p_conn => l_conn);
ftp.get(p_conn => l_conn,
p_from_file => '/u01/app/oracle/test.txt',
p_to_dir => 'MY_DOCS',
p_to_file => 'test_get.txt');
ftp.logout(l_conn);
我不明白“p_conn => l_conn”的目的是什么,因为我们从不在任何地方使用 p_conn。 即使关闭连接也是使用 ftp.logout(l_conn) 完成的,而不是使用 p_conn。 在此运算符“=>”之前使用的所有变量甚至都没有在任何地方定义。
也许它是特定于 UTL_TCP 包的运算符,因为我从未见过它在其他任何地方使用过,也无法在任何 PL/SQL 文档、Oracle 或其他文档中找到它。
【问题讨论】:
-
使用命名符号被认为是最佳实践,因为这意味着您的代码不再依赖于参数的顺序 - 它使您的代码更清晰并有助于避免常见错误(例如缺少参数,或错误地以错误的顺序获取参数)。
-
但是——命名参数通过增加它的大小使代码更加笨拙,无论是垂直的还是水平的!