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?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

gmyersCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.