thelittlewozniak

Untitled

Jan 3rd, 2019
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.58 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION FINDNOVEL(numero NOVEL.NOVELID%TYPE) RETURN VARCHAR2 IS
  2. v_Return VARCHAR2(2000);
  3. chaine VARCHAR2(2000);
  4. myNovel Novel%ROWTYPE;
  5. writerJson VARCHAR2(500);
  6. TYPE tabCritJson IS TABLE OF VARCHAR2(200) INDEX BY BINARY_INTEGER;
  7. TYPE indexCrit IS RECORD(us Critic.userId%TYPE, nov Critic.novelId%TYPE);
  8. TYPE tabCritInt IS TABLE OF indexCrit INDEX BY BINARY_INTEGER;
  9. myTabOfJson tabCritJson;
  10. myTabOfInt tabCritInt;
  11. BEGIN
  12.     SELECT * INTO myNovel FROM Novel WHERE novelId = numero;
  13.  
  14.     writerJson:=findwriter(myNovel.writerId);
  15.     chaine:='{ "novelId" : '||myNovel.novelId||', "title" : "'||myNovel.title||'", "year" : '||myNovel.publishingYear||', "writer" : '||writerJson||', "synopsis" : "'||myNovel.synosis||'", "setOfCritics" : [';
  16.     SELECT userId, novelId BULK COLLECT INTO myTabOfInt FROM CRITIC WHERE novelId=numero;
  17.    
  18.     IF(myTabOfInt.count>1)
  19.     THEN
  20.         FOR i IN myTabOfInt.FIRST .. myTabOfInt.LAST LOOP
  21.             myTabOfJson(i):=findCritic(myTabOfInt(i).us, myTabOfInt(i).nov);
  22.         END LOOP;
  23.     ELSE
  24.         IF(myTabOfInt.COUNT=1)
  25.         THEN
  26.             myTabOfJson(1):=findCritic(myTabOfInt(1).us, myTabOfInt(1).nov);
  27.         END IF;
  28.     END IF;
  29.    
  30.    
  31.     IF(myTabOfJson.Count>1)
  32.     THEN
  33.         FOR i IN myTabOfJson.FIRST .. myTabOfJson.last-1 LOOP
  34.             chaine:=chaine||myTabOfJson(i)||', ';
  35.         END LOOP;
  36.         chaine:=chaine||myTabOfJson(myTabOfJson.LAST);
  37.     ELSE
  38.         IF(myTabOfJson.COUNT=1)
  39.         THEN
  40.             chaine:=chaine||myTabOfJson(1);
  41.         END IF;
  42.     END IF;
  43.    
  44.     chaine:=chaine||'] }';
  45.  
  46.     RETURN chaine;
  47. END;
Advertisement