gpt4 book ai didi

sql - oracle中的<< some text>>是什么

转载 作者:行者123 更新时间:2023-12-04 14:19:18 29 4
gpt4 key购买 nike

我在阅读 pl sql << some text >> 的一些博客时发现了这个字符.

我从以下博客 http://www.oracle-base.com/articles/8i/collections-8i.php 中找到了这个角色

最佳答案

正如其他人所说,<<some_text>>是一个名为“some_text”的标签。标签在 PL/SQL 中不经常使用,但在各种上下文中都有帮助。

例如,假设您有几个嵌套循环,执行已到达最内层,代码需要退出所有嵌套循环并在最外层之后继续。这里可以按以下方式使用标签:

<<outer_most_loop>>
LOOP
...
<<next_inner_loop>>
LOOP
...
<<inner_most_loop>>
LOOP
...
IF something <> something_else THEN
EXIT outer_most_loop;
END IF;
...
END LOOP inner_most_loop;
...
END LOOP next_inner_loop;
...
END LOOP outer_most_loop;

-- Execution continues here after EXIT outer_most_loop;

something := something_else;
...

接下来,假设您有一些带有嵌套 block 的代码,每个代码块都声明了一个同名变量,因此您需要指示编译器您打算使用哪个同名变量。在这种情况下,您可以使用这样的标签:
<<outer>>
DECLARE
nNumber NUMBER := 1;
BEGIN
<<inner>>
DECLARE
nNumber NUMBER := 2;
BEGIN
DBMS_OUTPUT.PUT_LINE('outer.nNumber=' || outer.nNumber);
DBMS_OUTPUT.PUT_LINE('inner.nNumber=' || inner.nNumber);
END inner;
END outer;

如果您坚持为变量赋予与表中的列相同的名称,标签也很有用。例如,假设您有一个名为 PEOPLE 的表,其中包含一个名为 LASTNAME 的不可为空的列,并且您想删除 LASTNAME = 'JARVIS' 的所有人。以下代码:
DECLARE
lastname VARCHAR2(100) := 'JARVIS';
BEGIN
DELETE FROM PEOPLE
WHERE LASTNAME = lastname;
END;

不会做你想要的 - 相反,它会删除 PEOPLE 表中的每一行。 This occurs because in the case of potentially ambiguous names, PL/SQL will choose to use the column in the table instead of the local variable or parameter ;因此,以上被解释为
DECLARE
lastname VARCHAR2(100) := 'JARVIS';
BEGIN
DELETE FROM PEOPLE p
WHERE p.LASTNAME = p.lastname;
END;

和繁荣!表格中的每一行都说再见。 :-) 标签可用于限定变量名称,如下所示:
<<outer>>
DECLARE
lastname VARCHAR2(100) := 'JARVIS';
BEGIN
DELETE FROM PEOPLE p
WHERE p.LASTNAME = outer.lastname;
END;

执行此操作,只有 LASTNAME = 'JARVIS' 的人会消失。

是的 - 正如其他人所说,您可以 GOTO一个标签:
FUNCTION SOME_FUNC RETURN NUMBER
IS
SOMETHING NUMBER := 1;
SOMETHING_ELSE NUMBER := 42;
BEGIN
IF SOMETHING <> SOMETHING_ELSE THEN
GOTO HECK;
END IF;

RETURN 0;

<<HECK>>

RETURN -1;
END;

(Ewwwww!这样的代码感觉很不对劲......!)

分享和享受。

关于sql - oracle中的<< some text>>是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23674985/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com