Intermediate

Q:

18-21.

All that’s displayed is “Sound effects” because RTRIM starts at the end of the string and removes all occurrences of any of the characters it is to remove, until it comes to one that is not in the list. Note that the actual length of the output is 14 (it includes a trailing blank).

Q:

18-22.

This string is displayed:

ABCDEF

Q:

18-23.

Here is a suggested function:

CREATE OR REPLACE FUNCTION ascii_converter ( p_char IN VARCHAR2 )
                  RETURN INT IS
BEGIN
  -- The ASCII function returns the numeric
  -- equivalent of a character
  RETURN(ASCII(p_char));
END;

Q:

18-24.

Here you go:

CREATE OR REPLACE FUNCTION sound_the_same (
                                           p_string1 IN VARCHAR2,
                                           p_string2 VARCHAR2 )
                  RETURN BOOLEAN IS

  -- always be pessimistic
  v_ret_val BOOLEAN := FALSE;

BEGIN
  -- Compare the soundex returns for the two strings
  IF SOUNDEX(p_string1) = SOUNDEX(p_string2) THEN
    v_ret_val := TRUE;
  ELSE
    v_ret_val := FALSE;
  END IF;
  RETURN(v_ret_val);
END;

Q:

18-25.

Try this one:

CREATE OR REPLACE FUNCTION crlf RETURN VARCHAR2 IS
BEGIN
  -- Simply return the character associated with
  -- sequence 10 for a carriage return/line feed
  RETURN(CHR(10));
END;

CREATE OR REPLACE FUNCTION tab RETURN VARCHAR2 IS
BEGIN
  -- Simply return the character associated with
  -- sequence 10 for a carriage return/line feed
  RETURN(CHR(9));
END;

Q:

18-26.

The REPLACE function can make the desired switch in the string:

DECLARE the_text VARCHAR2(100); BEGIN -- It is important to first replace all single quotes with two quotes -- to include the quote in the string ...

Get Oracle PL/SQL Programming: A Developer's Workbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.