PLSQL Language Referenc-PL/SQL静态SQL-静态SQL的描述-伪列

伪列

1)静态SQL包括下列SQL伪列:

CURRVALNEXTVALLEVELOBJECT_VALUEROWIDROWNUM

 

2PL/SQL中的CURRVALNEXTVAL

注意:每次引用 序列名.NEXTVAL,序列会立即增长并且永久增长,不管你提交还是回滚了事务。

可以在NUMBER类型出现的任何地方使用CURRVALNEXTVAL,然而:

使用这2个值为ADT方法参数提供默认值时,会引发编译错误。

PL/SQL会计算CURRVALNEXTVAL每次出现时的值,而SQL是对于序列出现的每一行计算序列的值。

DROP TABLE employees_temp;

CREATE TABLE employees_temp AS

    SELECT employee_id, first_name, last_name

    FROM employees;

 

DROP TABLE employees_temp2;

CREATE TABLE employees_temp2 AS

    SELECT employee_id, first_name, last_name

    FROM employees;

 

DECLARE

    seq_value NUMBER;

BEGIN

    -- 产生初始序列值

    seq_value := employees_seq.NEXTVAL;

   

    DBMS_OUTPUT.PUT_LINE ('初始序列值: ' || TO_CHAR(seq_value)); 

 

    INSERT INTO employees_temp (employee_id, first_name, last_name)

    VALUES (employees_seq.NEXTVAL, 'Lynette', 'Smith');

 

    INSERT INTO employees_temp2 VALUES (employees_seq.CURRVAL, 'Morgan', 'Smith');

 

     --因为NEXTVAL可能被不同的用户和应用程序所引用,并且一些NEXTVAL的值

     --可能没有被存储在数据库中,所以值会产生断续

     seq_value := employees_seq.CURRVAL;

 

     DELETE FROM employees_temp2 WHERE employee_id = seq_value; 

 

     UPDATE employees_temp SET employee_id = employees_seq.NEXTVAL

     WHERE first_name = 'Lynette'

     AND last_name = 'Smith';   

 

    seq_value := employees_seq.CURRVAL;

 

    DBMS_OUTPUT.PUT_LINE (序列的最后值: ' || TO_CHAR(seq_value));

END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1118613/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/17013648/viewspace-1118613/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值