Question

CREATE OR REPLACE FUNCTION crimes_tied_officer DECLARE lv_witness_check VARCHAR(40); BEGIN Hi Guys

I am trying to create a function for a database I am developing for a project. However, it is throwing up errors gallore!

The present error is Error at line 18: PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with

    << continue close current delete fetch lock
   insert open rollback savepoint set sql execute commit forall
   merge pipe purge

1. CREATE OR REPLACE FUNCTION crimes_tied_officer
2. DECLARE
3. lv_witness_check VARCHAR(40);

I have included my function code below

CREATE OR REPLACE FUNCTION crimes_tied_officer
DECLARE
lv_witness_check VARCHAR(40);
BEGIN 
IF FK1_WITNESS_TYPE_ID = '800' THEN
lv_witness_check := 'External Observation Witness';
ELSIF FK1_WITNESS_TYPE_ID = 801 THEN
lv_witness_check := 'Expert Witness';
ELSIF FK1_WITNESS_TYPE_ID = 802 THEN
lv_witness_check := 'Partner or Spouse';
ELSIF FK1_WITNESS_TYPE_ID = 803 THEN
lv_witness_check := 'Police Officer';
ELSIF FK1_WITNESS_TYPE_ID = 804 THEN
lv_witness_check := 'The Accused';
ELSE lv_witness_check := 'No Witness Type Selected';
END IF;
RETURN lv_witness_check;
END;

My tables are at the following links. http://gyazo.com/0d01e276984bf464be36db075fc62e56

http://gyazo.com/de5c17891455e01fcf81b32f86fab80c

Was it helpful?

Solution

Try this, you also need to specify a return type

CREATE OR REPLACE FUNCTION crimes_tied_officer(FK1_WITNESS_TYPE_ID VARCHAR2) RETURN VARCHAR2
  AS
    lv_witness_check VARCHAR2(40);
  BEGIN
    IF FK1_WITNESS_TYPE_ID    = '800' THEN
      lv_witness_check       := 'External Observation Witness';
    ELSIF FK1_WITNESS_TYPE_ID = 801 THEN
      lv_witness_check       := 'Expert Witness';
    ELSIF FK1_WITNESS_TYPE_ID = 802 THEN
      lv_witness_check       := 'Partner or Spouse';
    ELSIF FK1_WITNESS_TYPE_ID = 803 THEN
      lv_witness_check       := 'Police Officer';
    ELSIF FK1_WITNESS_TYPE_ID = 804 THEN
      lv_witness_check       := 'The Accused';
    ELSE
      lv_witness_check := 'No Witness Type Selected';
    END IF;
    RETURN lv_witness_check;
  END;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top