dual

dual是Oracle与数据字典一起自动创建的一个虚拟表﹐它只有一列﹕DUMMY﹐其数据类型为﹕VARCHAR2(1)。

dual属于sys模式﹐但所有用户都可以使用dual名称访问它。

用来查那些不属于实际表里的内容,有时也用来检查某表某条件的记录存在性。

实例如下:

      str_sql := ' merge into t_xs_trade t1 ' || chr(10) ||
      
      ' using (select '''|| prm_tid ||''' tid from dual ) t2 ' || chr(10) ||
      ' on (t1.tid = t2.tid) ' || chr(10) ||
          ' when matched then  '|| chr(10) ||
          '   update set  '|| chr(10) ||
          '     t1.shop_name                     =     '''||  prm_shop_name  ||''','|| chr(10) ||
          '     t1.urgent_task_name        =  '''|| prm_urgent_task_name ||'''' || chr(10) ||
          ' when not matched then '|| chr(10) ||
          '   insert( '|| chr(10) ||
          '      tid, '|| chr(10) ||
          '     urgent_task_name, '|| chr(10) ||
          '     shop_name '|| chr(10) ||
          '   ) '|| chr(10) ||
          ' VALUES( '|| chr(10) ||
          '     '''|| prm_tid ||''','|| chr(10) ||
          '     '''|| prm_shop_name ||''','|| chr(10) ||
          '     ''' || prm_urgent_task_name ||''''|| chr(10) ||
          ' ) '  ;    
      
      out_error_row :=2;--错误行
      --返回ID
      prm_thradenumber := prm_tid;
      execute immediate str_sql; 

 

 

posted @ 2012-08-18 16:23  杨斌_济南  阅读(374)  评论(0编辑  收藏  举报