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;