Oracle 11g XE - Using a stored procedure to grant privileges to a table
GRANT is a DDL statement. You can not run DDL statements directly in PL/SQL, but you can use execute immediate:

CREATE OR REPLACE 
PROCEDURE "setUserPermissions" (u  VARCHAR2, l  INTEGER, tbl VARCHAR2)
AS
BEGIN
    DELETE FROM "userLvl" WHERE "user" = u;
    INSERT INTO "userLvl" VALUES(u,l);
    IF l&gt;0 AND l&lt;6 THEN
        execute immediate 'GRANT SELECT ON ' || tbl || ' TO ' || u;
        ...
    END IF;
END;