插入部分未执行

时间:2014-05-07 12:30:10

标签: plsql

procedure pod_tag_name (p_TAG_NAME   in  varchar2,
                    p_status     out varchar2,
                    p_status_dtl out varchar2)
is
  v_tag_name varchar2(100);
begin
  v_tag_name := get_tag_name(p_TAG_NAME);

  if v_tag_name = '' THEN
    insert into pod_tagmaster (TAG_ID,TAG_NAME_NEW , CREATEDBY, 
                               CREATEDDATE,UPDATED_BY, UPDATED_DATE,TAG_NAME_OLD)
                       values (POD_UNIQUE_VAL_SEQ.NEXTVAL,p_TAG_NAME   , null     , 
                               sysdate,null, sysdate, v_tag_name);

    v_rec_cnt    := sql%rowcount;                       
    commit; 
    p_status_dtl := v_rec_cnt||' Record Inserted Successfully';

  else 
    update pod_tagmaster 
      set TAG_NAME_NEW = p_TAG_NAME,
          TAG_NAME_OLD = v_tag_name,
          UPDATED_BY   = null,
          UPDATED_DATE = sysdate 
      where TAG_NAME_NEW = p_TAG_NAME;

    v_rec_cnt    := sql%rowcount;                       
    commit; 
    p_status_dtl := v_rec_cnt||' Record Updated Successfully';

  end if; 

  p_status     := 'SUCCESS';
end;

function get_tag_name(p_TAG_NAME varchar2) return varchar2
is
  v_tag_name varchar2(200);
begin
  select TAG_NAME_NEW 
    into v_tag_name
    from  pod_tagmaster
    where TAG_NAME_NEW  = p_TAG_NAME ; 

  return v_tag_name; 
exception         
  when others then      
    return '';   
end;        

end POD_PKG_TAG_MASTER;

1 个答案:

答案 0 :(得分:2)

更改

if v_tag_name = '' THEN

if v_tag_name IS NULL THEN

另外,更改

return '';  

RETURN NULL;

在Oracle中,零长度字符串与NULL相同;因此,平等比较失败了。在这种情况下,您必须使用IS NULL

分享并享受。