Que tal, recientemente aprendi a hacer Procedimientos Almacenados he hice uno donde implemente dos cursores!, bàsicamente son lo mismo:
Código HTML:
Declare Grupos Cursor For
select cve_grupo from sys_gruposusers where nombre=@usuario
Declare Grupos2 Cursor For
select cve_grupo from sys_gruposusers where nombre=@usuario
pero al ejecutar el PA me marca un error indicandome de que el cursos Grupo2 ya existe, pero si me devuelve los resultados esperados, alguien sabrá el por que me marca ese error?, así empleo los cursores:
(Se puede ocupar un mismo cursos para ambas acciones? estrictamente habalndo hacen lo mismo, que me sugieren?)
Código HTML:
Open Grupos
Fetch Next From Grupos
Into @ui_grupo
While @@Fetch_Status = 0
Begin
--print('ui_Grupo : ' + @ui_grupo);
set @condicion = N'' + @condicion + ' or usuario='''+@ui_grupo+'''';
Fetch Next From Grupos
Into @ui_grupo
End
Close Grupos
Deallocate Grupos
-------------
Open Grupos2
Fetch Next From Grupos2
Into @ui_grupo_2
While @@Fetch_Status = 0
Begin
------------------------------
set @aux_query = N'select @aux=count(cve_empresa) from doc_plantillas_seguridad where usuario='''+@ui_grupo_2+'''';
Execute sp_executesql @aux_query,N'@aux int output',@empresa_num output;
--print('...aux_query : ' + @aux_query);
if @empresa_num>0
begin
set @query = N'' + @query + 'select cve_docto,nombre from sys_tipos_doctos where Cve_Docto <> ''CA'' and cve_docto in'+
N' (select cve_plantilla from doc_plantillas_seguridad_usr where usuario='''+@ui_grupo_2+''' and usuario in'+
N' (select usuario from doc_plantillas_seguridad where cve_empresa='''+@cve_empresa+''')) UNION ';
--print('Query IF 2 : ' + @query);
end
else
begin
set @query = N'' + @query + 'select cve_docto,nombre from sys_tipos_doctos where Cve_Docto <> ''CA'' and cve_docto in'+
N' (select cve_plantilla from doc_plantillas_seguridad_usr where usuario='''+@ui_grupo_2+''') UNION ';
--print('Query ELSE 2 : ' + @query);
end
------------------------------
Fetch Next From Grupos2
Into @ui_grupo_2
End
Close Grupos2
Deallocate Grupos2
Gracias de Antemano!