Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: Can't code for s.... peanuts
To all who offered there help :
A big thanks, I've got this about 70% licked now
:)
The winning combination was :
CREATE OR REPLACE FUNCTION check_for_name2
(p_name_to_check VARCHAR)RETURN VARCHAR2
ISv_data VARCHAR2(<FONT color=#0000f0
size=1>20);v_return_value
VARCHAR2(20<FONT color=#000000
size=1>);BEGINSELECT lname INTO v_data
FROM namesWHERE lname = p_name_to_check;RETURN
'Found'<FONT color=#000000
size=1>;EXCEPTIONWHEN no_data_found THEN
RETURN 'No Matches'<FONT
color=#000000 size=1>;END check_for_name2;
Thanks to Lisa for the help there. However, the
attempts to do the same with the cursor continue to fail:<FONT
color=#000000 size=1>
CREATE OR REPLACE FUNCTION check_for_name
(p_name_to_check VARCHAR)RETURN VARCHAR2
ISCURSOR c_namestbl ISSELECT lname,
fnameFROM namesWHERE lname =
p_name_to_check;v_return_value VARCHAR2(<FONT color=#0000f0
size=1>20);BEGINOPEN
c_namestbl;IF c_namestbl%NOTFOUND = TRUE
THENv_return_value := 'Not
here';ELSIF C_namestbl%FOUND
= FALSE THENv_return_value := <FONT color=#0000f0
size=1>'In Here'; END
IF;CLOSE c_namestbl;RETURN
v_return_value;EXCEPTIONWHEN no_data_found THEN
RETURN 'No Matches'<FONT
color=#000000 size=1>;END check_for_name;
While I can get it to execute
with "Select check_for_name('Cruise') FROM dual;" it returns no data, but looks
like it wants to:
SQL> SELECT
check_for_name('Cruise') FROM dual;
<FONT face=Arial
size=2>CHECK_FOR_NAME('CRUISE')------------------------------------------------SQL>
Hi again everybody,
I'll try to be as descriptive as possible, sorry
if I leave anything important out.
I have the following function which I'm compiling
using PL/SQL Developer (tnx Djordje).
CREATE OR REPLACE FUNCTION check_for_name
(p_name_to_check VARCHAR)RETURN BOOLEAN
ISCURSOR c_namestbl ISSELECT
lnameFROM namesWHERE lname =
p_name_to_check;v_return_value
BOOLEAN;BEGINOPEN c_namestbl;IF
c_namestbl%NOTFOUND THENv_return_value :=
FALSE;ELSIF C_namestbl%FOUND
THENv_return_value := TRUE; END
IF;RETURN v_return_value;CLOSE
c_namestbl;END check_for_name;
It compiles without errors (now).
The table 'names' is built like this :
SVRMGR> DESCRIBE names;Column
Name Null? Type------------------------------ -------- ----FNAME VARCHAR2(20)LNAMEVARCHAR2(20)SVRMGR>
LNAME-------------------- --------------------Bruce WillisSalma HayekTom CruiseElle
Received on Mon Jul 23 2001 - 13:57:58 CDT
![]() |
![]() |