Hi all,
Thank you for all who responded to my range checking
question. I created a function check_range with in
parameter varchar2, and return varchar2.
This works fine:
select check_range('301') from FRANCHISE_AREA;
But when I select the column, I got:
select check_range(FRANCHISE_NAME) from FRANCHISE_AREA
*
ERROR at line 1:
ORA-20599: ORA-06502: PL/SQL: numeric or value error:
character to number
conversion error
ORA-06512: at "ICSS.CHECK_RANGE", line 69
ORA-06512: at line 1
The table structure shows FRANCHISE_NAME is varchar2:
SQL> desc FRANCHISE_AREA;
Name Null?
Type
----------------------------------------- --------
----------------------------
FRANCHISE_ID NOT NULL
NUMBER(10)
FRANCHISE_NAME NOT NULL
VARCHAR2(32)
FRANCHISE_AUTHORITY NOT NULL
VARCHAR2(100)
FRANCHISE_CONTACT_ADDRESS_ID NOT NULL
NUMBER(10)
FRANCHISE_CONTACT_PHONE_ID
NUMBER(10)
FRANCHISE_CONTACT_NAME
VARCHAR2(32)
FRANCHISE_CUI_NUMBER NOT NULL
VARCHAR2(10)
FRANCHISE_EFFECTIVE_DATE NOT NULL
DATE
FRANCHISE_EXPIRATION_DATE
DATE
REMITTANCE_SERVICE_CENTER_ID NOT NULL
NUMBER(5)
BILLING_SERVICE_CENTER_ID NOT NULL
NUMBER(5)
RETURN_ADDR_SERVICE_CENTER_ID NOT NULL
NUMBER(5)
CUI_SERVICE_CENTER_ID
NUMBER(5)
COMPANY_ID NOT NULL
NUMBER(10)
The code for function is:
CREATE OR REPLACE FUNCTION check_range(
franchise_name varchar2)
return
varchar2
as
ifranchise_name number;
franchise_code varchar2(2);
StoO_error number;
StoO_errmsg VARCHAR2(255);
begin
ifranchise_name := to_number(franchise_name);
if ifranchise_name >= 301 and ifranchise_name
<= 390 then
franchise_code := 'QD';
elsif ifranchise_name >= 391 and
ifranchise_name <= 392 then
franchise_code := 'NW';
elsif ifranchise_name >= 393 then
franchise_code := 'SA';
elsif ifranchise_name >= 394 then
franchise_code := 'NT';
elsif ifranchise_name >= 415 and
ifranchise_name <= 420 then
franchise_code := 'NW';
elsif ifranchise_name >= 421 then
franchise_code := 'NT';
elsif ifranchise_name >= 422 and
ifranchise_name <= 434 then
franchise_code := 'NW';
elsif ifranchise_name >= 435 and
ifranchise_name <= 437 then
franchise_code := 'SA';
elsif ifranchise_name >= 439 and
ifranchise_name <= 455 then
franchise_code := 'NW';
elsif ifranchise_name >= 456 then
franchise_code := 'SA';
elsif ifranchise_name >= 457 then
franchise_code := 'NW';
elsif ifranchise_name >= 459 then
franchise_code := 'SA';
elsif ifranchise_name >= 460 then
franchise_code := 'NW';
elsif ifranchise_name >= 465 and
ifranchise_name <= 467 then
franchise_code := 'SA';
elsif ifranchise_name >= 473 then
franchise_code := 'NT';
elsif ifranchise_name >= 475 and
ifranchise_name <= 476 then
franchise_code := 'SA';
elsif ifranchise_name >= 477 and
ifranchise_name <= 479 then
franchise_code := 'NW';
elsif ifranchise_name >= 483 then
franchise_code := 'SA';
elsif ifranchise_name >= 487 and
ifranchise_name <= 498 then
franchise_code := 'NW';
elsif ifranchise_name >= 505 and
ifranchise_name <= 510 then
franchise_code := 'VC';
elsif ifranchise_name >= 511 and
ifranchise_name <= 515 then
franchise_code := 'TA';
elsif ifranchise_name >= 516 and
ifranchise_name <= 582 then
franchise_code := 'VC';
elsif ifranchise_name >= 701 and
ifranchise_name <= 799 then
franchise_code := 'NW';
else
franchise_code := NULL;
end if;
return franchise_code;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
StoO_error := SQLCODE;
StoO_errmsg := SQLERRM;
raise_application_error(-20599,substr(StoO_errmsg,1,100));
end;
Any idea ??? Thank you !!
Leslie
__________________________________________________
Do You Yahoo!?
Find the one for you at Yahoo! Personals
http://personals.yahoo.com
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author: Leslie Lu
INET: [EMAIL PROTECTED]
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).