thelittlewozniak icon

Untitled

thelittlewozniak | PRO | 01/03/19 12:02:20 PM UTC | 0 ⭐ | 7354 👁️ | Never ⏰ | []
PL/SQL |

1.58 KB

|

None

|

0 👍

/

0 👎

CREATE OR REPLACE FUNCTION FINDNOVEL(numero NOVEL.NOVELID%TYPE) RETURN VARCHAR2 IS 
v_Return VARCHAR2(2000);
chaine VARCHAR2(2000);
myNovel Novel%ROWTYPE;
writerJson VARCHAR2(500);
TYPE tabCritJson IS TABLE OF VARCHAR2(200) INDEX BY BINARY_INTEGER;
TYPE indexCrit IS RECORD(us Critic.userId%TYPE, nov Critic.novelId%TYPE);
TYPE tabCritInt IS TABLE OF indexCrit INDEX BY BINARY_INTEGER;
myTabOfJson tabCritJson;
myTabOfInt tabCritInt;
BEGIN
    SELECT * INTO myNovel FROM Novel WHERE novelId = numero;
 
    writerJson:=findwriter(myNovel.writerId);
    chaine:='{ "novelId" : '||myNovel.novelId||', "title" : "'||myNovel.title||'", "year" : '||myNovel.publishingYear||', "writer" : '||writerJson||', "synopsis" : "'||myNovel.synosis||'", "setOfCritics" : [';
    SELECT userId, novelId BULK COLLECT INTO myTabOfInt FROM CRITIC WHERE novelId=numero;
    
    IF(myTabOfInt.count>1)
    THEN
        FOR i IN myTabOfInt.FIRST .. myTabOfInt.LAST LOOP
            myTabOfJson(i):=findCritic(myTabOfInt(i).us, myTabOfInt(i).nov);
        END LOOP;
    ELSE
        IF(myTabOfInt.COUNT=1)
        THEN
            myTabOfJson(1):=findCritic(myTabOfInt(1).us, myTabOfInt(1).nov);
        END IF;
    END IF;
    
    
    IF(myTabOfJson.Count>1)
    THEN
        FOR i IN myTabOfJson.FIRST .. myTabOfJson.last-1 LOOP
            chaine:=chaine||myTabOfJson(i)||', ';
        END LOOP;
        chaine:=chaine||myTabOfJson(myTabOfJson.LAST);
    ELSE
        IF(myTabOfJson.COUNT=1)
        THEN
            chaine:=chaine||myTabOfJson(1);
        END IF;
    END IF;
   
    chaine:=chaine||'] }';
 
    RETURN chaine;
END;

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎