mejorar la concatenacion de elementos segun opciones

Iniciado por d91, 30 Septiembre 2015, 01:39 AM

0 Miembros y 1 Visitante están viendo este tema.

d91

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
Código (sql) [Seleccionar]

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;