那么请问plsql中变量是类似于c中的静态变量呢,还是auto型变量

解决方案 »

  1.   

    这种方法性能比sequence差很多吧?
      

  2.   

    create sequence seq_name
    start with 1
    increment by 1
    minvalue 1
    maxvalue 9999999999
    noorder;create or replace trigger tri_on_st before insert on st
    for each row
    declare
    n number;
    begin
    select seq_name.nextval into n;
    :new.学号 = n;如果没有特殊要求,这样的效率和并发性要好的多
      

  3.   

    应该是,漏敲了
    select seq_name.nextval into n from dual;
      

  4.   

    谢谢以上各位!
    其实我的问题关键的疑惑在于:plsql代码块的声明部分。
    对于n这个变量,是不是触发器每次被访问都要被清为null呢
      

  5.   

    没测试过,不过按照oracle的策略,经常调用的代码块会在内存中保留,数据段是否重新初始化就不知道了,有兴趣的话测试一下,我也想看看结果
      

  6.   

    void printValue()
    {
       int i = 0;      //你说这个i是局部变量还是static变量?
       printf("%d",i);
    }
    int main()
    {
      printValue();
    }
      

  7.   

    程序执行完毕.都会调用c中的free()来清空内存区.
      

  8.   

    这个i肯定是auto类型的。oracle呢,我就不是很清楚了
    void printValue()
    {
       int i = 0;      //你说这个i是局部变量还是static变量?
       printf("%d",i);
    }
    int main()
    {
      printValue();
    }