在 pl/sql 中使用双竖线

The use of double vertical bars in pl/sql

我想找反串程序。我找到了很多示例,但 none 解释了 for 循环中到底发生了什么:

DECLARE
ln_rev_input varchar2(50);
ln_input varchar2(50):= '&input';

BEGIN
     FOR i in reverse 1..length(ln_input) LOOP
         ln_rev_input := ln_rev_input||substr(ln_input, i, 1);
     END LOOP;
     dbms_output.put_line(ln_rev_input);
END;

我不明白这一行,尤其是'||'的用法在这个程序中:

ln_rev_input := ln_rev_input||substr(ln_input, i, 1);

我知道这个'||'用于连接字符串,但不明白 ln_rev_input 是如何分配的。

谢谢

Oracle/PLSQL || 运算符允许您将 2 个或更多字符串连接在一起。

以上代码的作用是反转输入字符串。假设您传递了一个名为 Oracle 的字符串,它的作用是从字符串 Oracle 的末尾开始,使用函数 substr(ln_input, i, 1) 一次获取一个字符并将该字符连接到ln_rev_input 变量中的任何值。

开始时,ln_rev_input为空,ln_rev_input := ln_rev_input||substr(ln_input, i, 1);的结果为e

当它进入下一次迭代时,字符 l 连接到变量 ln_rev_input 中的任何值,即 e - 所以这段代码是喜欢

ln_rev_input := 'e' || 'l';

这将导致 ln_rev_input 的值更改为 el。如此重复 6 次,即字符串的长度 - 我们使用 length(ln_input) 找到 - 最后,ln_rev_input 的值将是 elcarO.