Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2010, 08:13
zyon
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 19 años, 3 meses
Puntos: 3
Pregunta Cursores en PA

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!
__________________
Wow! No se que decir...