Narogg Programer, privatna firma @stolom
Član broj: 247094 Poruke: 2 *.hpb.hr.
|
Riješio sam to ipak uz svesrdnu pomoć googlea :)
Na sljedeći način:
Kreirane su dvije funkcije:
list_element i min_broj
list element splita polje iz baze na osnovu separatora:
CREATE OR REPLACE FUNCTION list_element
(p_string VARCHAR2,
p_element INTEGER,
p_separator VARCHAR2
)
RETURN VARCHAR2
AS
v_string VARCHAR2(32767);
BEGIN
v_string := p_string || p_separator;
FOR i IN 1 .. p_element - 1 LOOP
v_string := SUBSTR(v_string,INSTR(v_string,p_separator)+1);
END LOOP;
RETURN SUBSTR(v_string,1,INSTR(v_string,p_separator)-1);
----
END list_element;
/
A funkcija min_broj uzima najmanji broj (pisao sam da mi treba najveći broj a zapravo mi treba najmanji). Broj znakova koji je sadržan u polju iz kojeg treba izdvojiti najmanji broj je poznat, od 0 do 9 odvojeni zarezima.
CREATE OR REPLACE FUNCTION min_broj
( inp_acid VARCHAR2
)
RETURN VARCHAR2 AS var_min VARCHAR2(32767);
--SET SERVEROUTPUT ON
--DECLARE
var1 VARCHAR2(2);
var2 VARCHAR2(2);
var3 VARCHAR2(2);
var4 VARCHAR2(2);
var5 VARCHAR2(2);
var6 VARCHAR2(2);
var7 VARCHAR2(2);
var8 VARCHAR2(2);
var9 VARCHAR2(2);
var10 VARCHAR2(2);
--var_min NUMBER(2);
BEGIN
FOR rec IN (željeni upit) LOOP
SELECT
list_element (rec.polje, 1, ','),
list_element (rec.polje, 2, ','),
list_element (rec.polje, 3, ','),
list_element (rec.polje, 4, ','),
list_element (rec.polje, 5, ',')
INTO var1, var2, var3, var4, var5
FROM DUAL ;
--izdvajanje najmanjeg broja
var_min :=var1;
IF (var_min > var2)AND (var2!=8) THEN
var_min:=var2;
END IF;
IF (var_min > var3)AND (var3!=8) THEN
var_min:=var3;
END IF;
IF (var_min > var4)AND (var4!=8) THEN
var_min:=var4;
END IF;
IF (var_min > var5)AND (var5!=8) THEN
var_min:=var5;
END IF;
IF (var_min > var6)AND (var6!=8) THEN
var_min:=var6;
END IF;
IF (var_min > var7)AND (var7!=8) THEN
var_min:=var7;
END IF;
IF (var_min > var8)AND (var8!=8) THEN
var_min:=var8;
END IF;
IF (var_min > var9)AND (var9!=8) THEN
var_min:=var9;
END IF;
IF (var_min > var10)AND (var10!=8) THEN
var_min:=var10;
END IF;
END LOOP;
return var_min;
END min_broj;
/
Pozdrav!
|