PLSQL:VARBIABLE:=SEQUENCE.NEXTVAL或从dual中选择SEQUENCE.NEXTVAL作为变量?
PL/SQL的区别在于:PLSQL:VARBIABLE:=SEQUENCE.NEXTVAL或从dual中选择SEQUENCE.NEXTVAL作为变量?,plsql,oracle11g,oracle11gr2,Plsql,Oracle11g,Oracle11gr2,PL/SQL的区别在于: CREATE OR REPLACE FUNCTION WBAR_TEST_1 RETURN NUMBER IS LN_TMP NUMBER; BEGIN LN_TMP := SOME_SEQUENCE.NEXTVAL; RETURN LN_TMP; END WBAR_TEST_1; 及 我认为第二种方法仅用于历史目的。第一种方法可用于Oracle 11g,在此之前,您必须从dual中选择seq_name.nextVal。有什么区别?嗯,在我看来,第一个更容
CREATE OR REPLACE FUNCTION WBAR_TEST_1 RETURN NUMBER IS
LN_TMP NUMBER;
BEGIN
LN_TMP := SOME_SEQUENCE.NEXTVAL;
RETURN LN_TMP;
END WBAR_TEST_1;
及
我认为第二种方法仅用于历史目的。第一种方法可用于Oracle 11g,在此之前,您必须从dual中选择seq_name.nextVal。有什么区别?嗯,在我看来,第一个更容易阅读 此外,Tim Hall在他的网站上写道,根据文档,第一种(新)方法可以提高性能。他做了一些测试,但差别不大 在Tim Hall的网站上阅读更多内容: 另一方面,如本文所述,获取
nextVal
值的底层实现没有改变,因此实际上应该没有区别
CREATE OR REPLACE FUNCTION WBAR_TEST_2 RETURN NUMBER IS
LN_TMP NUMBER;
BEGIN
SELECT SOME_SEQUENCE.NEXTVAL INTO LN_TMP FROM DUAL;
RETURN LN_TMP;
END WBAR_TEST_2;