compare varchar2 field in pl/sql procedure urgent help !!!!!

Hi,

I have procedure which need to compare the varchar2 field. I tried different way but I am not able to put  single quote  during variable comparison. if I hardcode single quote with value then it works but i Need variable value different and not hardcoded.

here is the procedure:

CREATE OR REPLACE procedure ACCT_INFO_MKT_MAP1_upd

is
--formula :      680100.001*(430400/NS$TOTALBLDSRAZS)
      cursor inrec is
            select hyp_acct_no,frstcol,trim(sndcol)sndcol from ACCT_INFO_MKT_MAP1 ;

v_acct_no  ACCT_INFO_MKT_MAP1.HYP_ACCT_NO%type;
v_frstcol  ACCT_INFO_MKT_MAP1.frstcol%type;
v_sndcol   ACCT_INFO_MKT_MAP1.sndcol%type;
v_janval_frstcol  number(20);
v_janval_sndcol  number(20);
v_janval_total  number(20);
v_err_no  varchar2(20);
v_err_msg  varchar2(200);
v_srt_tm  varchar2(20);
v_end_tm  varchar2(20);
v_sndcol1 varchar2(200);

-- first value is 430400  
--second value is  NS$TOTALBLDSRAZS

begin
      for rec in inrec loop
            exit when inrec%notfound;


            select jan_val into v_janval_sndcol
                        from HYP_ENT_HIST
                              where trim(hyp_acct_no)=TRIM('||v_sndcol1||') and acct_yr=1999;
                              

            select jan_val into v_janval_frstcol
                        from HYP_ENT_HIST
                              where trim(hyp_acct_no)=trim(rec.frstcol) and acct_yr=1999;
/* I am getting problem while comparing the second varchar value
both columns are varchar2 and same length.
 the select statemnt is like
   select jan_val v_janval_frstcol
                        from HYP_ENT_HIST
                              where trim(hyp_acct_no)='NS$TOTALBLDSRAZS ' and acct_yr=1999;
                              then it works fine
      */

            update ACCT_INFO_MKT_MAP1
                        set total=nvl(rec.hyp_acct_no*(v_janval_frstcol/(v_janval_sndcol)),0)
                              where hyp_acct_no=trim(rec.hyp_acct_no) ;                              

            end loop;
            commit;
                  
end;
/

/* I am getting problem while comparing the second value
it the select statemnt is like
   select jan_val v_janval_frstcol
                        from HYP_ENT_HIST
                              where trim(hyp_acct_no)='NS$TOTALBLDSRAZS ' and acct_yr=1999;
                              then it works fine
      */

1)  how to put single quote for variable in procedure?
2) incase query returns more then one row then how to avoid that?


Thank you very much in advance.
dcmumbai
dcmumbaiAsked:
Who is Participating?
 
gmyersConnect With a Mentor Commented:
If this works
   select jan_val v_janval_frstcol
                    from HYP_ENT_HIST
                         where trim(hyp_acct_no)='NS$TOTALBLDSRAZS ' and acct_yr=1999;
                         then it works fine
and this doesn't
         select jan_val into v_janval_frstcol
                    from HYP_ENT_HIST
                         where trim(hyp_acct_no)=trim(rec.frstcol) and acct_yr=1999;
then trim(rec.frstcol) doesn't match 'NS$TOTALBLDSRAZS '
The last character looks like a space, but if the trim isn't getting rid of it, could be a tab or something more ugly.
do a
select distinct ascii(substr(trim(hyp_acct_no),length(trim(hyp_acct_no)))) from HYP_ENT_HIST

I use the following to strip out all non-uppercase letters from a string. If you include all the characters you want in the string, it will strip out all the others (tabs, carriage retuns etc).
updat table set col =  
translate(col,' '||translate(col,' ABCDEFGHIJKLMNOPQRTSUVWXYZ',' '),' ') a
0
 
dcmumbaiAuthor Commented:
Hi gmyers,

How are you? I appreciate your prompt help. Thank you very much. It was my mistake while comparing the wrong column. I was in hurry and didn't realise the problem.

 I am comparing the  
          select jan_val into v_janval_sndcol
                    from HYP_ENT_HIST
                         where trim(hyp_acct_no)=TRIM('||v_sndcol1||') and acct_yr=1999;

should be

          select jan_val into v_janval_sndcol
                    from HYP_ENT_HIST
                         where trim(hyp_acct_no)=TRIM(rec.hyp_acct_no) and acct_yr=1999;

sorry for that.

Once again thank you very much.
dcmumbai

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.