thelittlewozniak

Untitled

Jan 4th, 2019
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.39 KB | None | 0 0
  1. CREATE OR REPLACE FUNCTION FINDCREATURE(numero CREATURE.CREATUREID%TYPE) RETURN VARCHAR2 IS
  2. chaine VARCHAR2(2000);
  3. myCreature Creature%ROWTYPE;
  4. jsonWriter VARCHAR2(500);
  5. TYPE tabOfInt IS TABLE OF NOVEL.NOVELID%TYPE INDEX BY BINARY_INTEGER;
  6. myTabOfInt1 tabOfInt;
  7. myTabOfInt2 tabOfInt;
  8.  
  9. TYPE tabOfJson IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
  10. myTabOfJson1 tabOfJson;
  11. myTabOfJson2 tabOfJson;
  12.  
  13. BEGIN
  14.     SELECT * INTO myCreature FROM Creature WHERE CREATUREID = numero;
  15.     jsonWriter:=findwriter(myCreature.writerId);
  16.     chaine:='{ "creatureId" : '||myCreature.creatureId||', "description" : "'||myCreature.description||'", "firstWriter" : '||jsonWriter||', "setOfNovels" : [';
  17.     --On cherche les Novel pour le setOfNovels
  18.     SELECT novelId BULK COLLECT INTO myTabOfInt1 FROM APPEARANCE WHERE CREATUREID=numero;
  19.    
  20.     IF(myTabOfInt1.count>1)
  21.     THEN
  22.         FOR i IN myTabOfInt1.FIRST .. myTabOfInt1.LAST LOOP
  23.         myTabOfJson1(i):=findNovel(myTabOfInt1(i));
  24.         END LOOP;
  25.     ELSE
  26.         IF(myTabOfInt1.COUNT=1)
  27.         THEN
  28.         myTabOfJson1(1):=findNovel(myTabOfInt1(1));
  29.         END IF;
  30.     END IF;
  31.    
  32.    
  33.     IF(myTabOfJson1.count>1)
  34.     THEN
  35.         FOR i IN myTabOfJson1.FIRST .. myTabOfJson1.last-1 LOOP
  36.             chaine:=chaine||myTabOfJson1(i)||', ';
  37.         END LOOP;
  38.         chaine:=chaine||myTabOfJson1(myTabOfJson1.LAST);
  39.     ELSE
  40.         IF(myTabOfInt1.COUNT=1)
  41.         THEN
  42.             chaine:=CONCAT(chaine,myTabOfJson1(1));
  43.         END IF;
  44.     END IF;
  45.    
  46.     chaine:=CONCAT(chaine,'], "setOfNames" : [ ');
  47.  
  48.     --On cherche les noms pour setOfNames
  49.     SELECT creatureNameId BULK COLLECT INTO myTabOfInt2 FROM CreatureName WHERE creatureId=numero;
  50.     IF(myTabOfInt2.count>1)
  51.     THEN
  52.         FOR i IN myTabOfInt2.FIRST .. myTabOfInt2.LAST LOOP
  53.         myTabOfJson2(i):=findCreatureName(myTabOfInt2(i));
  54.         END LOOP;
  55.     ELSE
  56.         IF(myTabOfInt2.COUNT=1)
  57.         THEN
  58.             myTabOfJson2(1):=findCreatureName(myTabOfInt2(1));
  59.         END IF;
  60.     END IF;
  61.    
  62.     IF(myTabOfJson2.count>1)
  63.     THEN
  64.         FOR i IN myTabOfJson2.FIRST .. myTabOfJson2.last-1 LOOP
  65.             chaine:=chaine||myTabOfJson2(i)||', ';
  66.         END LOOP;
  67.         chaine:=chaine||myTabOfJson2(myTabOfJson2.LAST);
  68.     ELSE
  69.         IF(myTabOfInt2.COUNT=1)
  70.         THEN
  71.             chaine:=CONCAT(chaine,myTabOfJson2(1));
  72.         END IF;
  73.     END IF;
  74.    
  75.     chaine:=CONCAT(chaine, '] }');
  76.     RETURN chaine;
  77. END;
Advertisement