Started with the logic in
Oracle PL/Sql Programming by Steven Feuerstein. Changed some names to make sense to me, added some comments, and tweaked a few things.
Create or Replace Function
WordCount (v_InpStr In Varchar2)
Return Pls_Integer
As
v_WordCnt Pls_Integer := 0;
v_StrLen Pls_Integer := Nvl(Length(v_InpStr),0);
In_A_Word Boolean;
Begin
For v_Ctr in 1..v_StrLen + 1
Loop
/*----------------------------------------*/
/* if a blank or at the end of the string */
/*----------------------------------------*/
If Substr(v_InpStr, v_Ctr, 1) = ' '
or v_Ctr > v_StrLen
Then
/*---------------------------------------*/
/* If a space is found after a word then */
/* bump the count, and reset the flag */
/* (handles multiple spaces) */
/*---------------------------------------*/
If In_A_Word
Then
v_WordCnt := v_WordCnt +1 ;
In_A_Word := False;
End If;
Else
/*--------------------------------------*/
/* The current character is not a space */
/*--------------------------------------*/
In_A_Word := True;
End If;
End Loop;
Return v_WordCnt;
End;
/
Select Street_Address
, WordCount(Street_Address)
As
Words
From Locations
Where Rownum < 6;
SQL> Desc WordCount
FUNCTION WordCount RETURNS BINARY_INTEGER
Argument Name Type In/Out Default?
------------- -------- ------ --------
INPSTR VARCHAR2 IN
SQL> Grant Execute on WordCount to Scott;
Grant succeeded.
No comments:
Post a Comment