日期:2014-05-17  浏览次数:20897 次

在线等,请教大神
  请教大神朋友一个问题,在线等,急!!本人才疏学浅,望见谅!!
   我现在想开发一个存储过程,需求如下:
 两个表a 和 b,通过a 表中的tid和B表中的tagid进行关联。我想查询A表中有id的记录B表中没有的,然后取到ID,并得出‘在b表中不存在’的记录,同理,A表没有B表有也是类似。
  谢谢大家!!!受教了。。。
------解决方案--------------------
引用:
          


declare
i number;
begin
SELECT  count(*) into i  FROM   tbdata.DPF_S_PH_BOTTAG  a WHERE  NOT EXISTS 
          ( SELECT 1 FROM   tbdata.IMS_EPC_INFO   b  WHERE  a.tagid = b.tid );
if i>0 then
dbms_output.putline('在b表中不存在');
end;

------解决方案--------------------
1.DECODE(value,search_value,result,default_value)对value与search_value进行比较。如果两个值相等,DECODE()返回result,否则返回default_value。DECODE()的每个参数都可以是列,字面值、函数或之查询。DECODE()是orcale以前所特有的一个函数,如果您在使用9i或更高版本,应该用case表达式来代替。
2.CASE 表达式语法:

CASE search_expression
  WHEN expression1 THEN result1
  …
  ELSE default_result
END

或者

CASE 
  WHEN search_expression=expression1 THEN result1
  …
  ELSE default_result
END