hola a todos, estoy trabajando el prototipo de un procedimiento almacenado en Oracle, desde la aplicacion en .net me envian cuales opciones fueron marcadas(por lo menos marcaron una) y las tengo que concatenar porque es para dar privilegios a un nuevo usuario, encontre una solucion pero veo que es muy extensa, tal vez me ayudan con otra idea para hacerlo mas pequeño y mas optimo
SET serveroutput ON
DECLARE
priv1 NUMBER(2);
priv2 NUMBER(2);
priv3 NUMBER(2);
priv4 NUMBER(2);
privilegios varchar2(512);
cadena varchar2(1000);
BEGIN
priv1:=1;--privilegio de insert
priv2:=1;--privilegio de update
priv3:=0;--privilegio de delete
priv4:=1;--privilegio de select
IF priv1 > 0 THEN
privilegios:='INSERT';
END IF;
IF priv2 > 0 AND privilegios IS NOT NULL THEN
privilegios:=privilegios||','||'UPDATE';
END IF;
IF priv2 > 0 AND privilegios IS NULL THEN
privilegios:='UPDATE';
END IF;
IF priv3 > 0 AND privilegios IS NOT NULL THEN
privilegios:=privilegios||','||'DELETE';
END IF;
IF priv3 > 0 AND privilegios IS NULL THEN
privilegios:='DELETE';
END IF;
IF priv4 > 0 AND privilegios IS NOT NULL THEN
privilegios:=privilegios||','||'SELECT';
END IF;
IF priv4> 0 AND privilegios IS NULL THEN
privilegios:='SELECT';
END IF;
cadena:='grant '||privilegios||' on '||' tab_estudiante '||' to '||' my_usuario';
dbms_output.put_line(cadena);
END;