Twoim problemem jest to, że powszechną NICOŚĆ mylisz z osobistą PUSTKĄ
NUMBER, VARCHAR2, DATE, BOOLEAN, BINARY_INTEGER, REAL,%TYPE, %ROWTYPE,*DBMS_OUTPUT.PUT_LINE ('chuj ci w dupe');/* zliczanie czegos */DECLARE usuniête NUMBER;BEGINDELETE FROM Dept WHERE Deptno = 50;usuniête := SQL%ROWCOUNT;INSERT INTO dziennik VALUES ('Dzia³', usuniête, Sysdate);END;//* SELECT w PLSQL */DECLARErek_osob Emp%ROWTYPE; /* Typ wierszowy */BEGINSELECT * INTO rek_osob FROM Emp e WHERE e.Ename = 'SCOTT';rek_osob.Sal := 1.1*rek_osob.Sal;INSERT INTO Dziennik VALUES (rek_osob.Ename, rek_osob.Job, rek_osob.Sal,SYSDATE);END;//* record */TYPE Typ_rek_prac IS RECORD(numer_prac NUMBER(4) NOT NULL,nazwisko VARCHAR2(40) NOT NULL,Zarobki NUMBER(8,2),Num_dzia³u NUMBER(4));rekord_prac Typ_rek_prac;/* IF */IF warunek THEN ci¹g_instrukcjiELSE ci¹g_instrukcji END IF;/IF warunek THEN ci¹g_instrukcjiELSIF warunek THEN ci¹g_instrukcji END IF;/LOOPci¹g instrukcji (w tym EXIT lub EXIT WHEN warunek)END LOOP;/FOR zmienna IN wartoœæ1 .. wartoœæ2 LOOPci¹g instrukcjiEND LOOP;/WHILE warunek LOOPci¹g instrukcjiEND LOOP;//* KURSOR */DECLAREzarobki REAL:=0;CURSOR kursor_osoba ISSELECT * FROM Emp;rek_osoby kursor_osoba%ROWTYPE;BEGINOPEN kursor_osoba;LOOPFETCH kursor_osoba INTO rek_osoby;EXIT WHEN kursor_osoba%NOTFOUND;zarobki := zarobki + NVL(rek_osoby.Sal,0);END LOOP;DBMS_OUTPUT.Put_line('W sumie zarobki = '||zarobki);CLOSE kursor_osoba;END;//* z PARAMETRAMI */DECLARECURSOR emp_cursor(v_deptno NUMBER, v_job VARCHAR2) ISSELECT e.Empno, e.EnameFROM Emp eWHERE e.Deptno = v_deptno AND e.Job = v_job;BEGINOPEN emp_cursor(10, 'CLERK');/------? kursor%FOUND czy z bazy danych sprowadzono kolejny wiersz,? kursor%NOTFOUND czy koniec sprowadzania wierszy,? kursor%ROWCOUNT liczba sprowadzonych dot¹d wierszy,? kursor%ISOPEN czy kursor jest otwarty.