Ejemplo de definición de proceso batch en stored procedure

Publicado al menos 5 años hace por Flexygo Team

Publicar un tema
Flexygo Team
Flexygo Team

El proceso recibe como último parámetro la lista de elementos seleccionados

La lista de elementos la pasamos a una tabla temporal para luego cruzarla con la tabla de cuentas.

También podríamos vaciar la selección de registros con una instrucción javascript.


CREATE PROCEDURE [dbo].[pAccounts_ChangeState]
@state_id tinyint,
@lockdate smalldatetime,
@lockreason nvarchar(2000)=null,
@employeechange_id int,
@sysCollectionSentence nvarchar(max)

AS
  declare @accounts Table (account_id int)      
  declare @startdate smalldatetime  
  BEGIN TRY    
  BEGIN TRAN  
    
    INSERT INTO @accounts EXEC sp_executesql @sysCollectionSentence;

    update A 
      set state_id=@state_id
      ,lockdate= case when @state_id=0 then null else @lockdate end
      ,lockreason=case when @state_id=0 then null else @lockreason end
      ,modifiedby=@employeechange_id, modifieddate=getdate()
    from ACCOUNT A 
    inner join @accounts Sel on A.account_id=Sel.account_id      

   -- Si necesitaramos vaciar la selección de registros de la colección Accounts por javascript:
    --SELECT 'flexygo.selection.clear(''Account'')' AS Javascript
    

  COMMIT TRAN      
  RETURN -1
END TRY
BEGIN CATCH

  IF @@TRANCOUNT >0 BEGIN
    ROLLBACK TRAN 
  END

  print 'The selected accounts could not be updated. ' + ERROR_MESSAGE()
  RETURN 0
  
END CATCH


0 Votos


1 Comentarios

Flexygo Team

Flexygo Team publicado en torno a 1 año hace

Buenas tardes.


He adaptado el ejemplo en una lista de intervenciones que tengo  y marcando una o varias al azar puedo reasignar el operario que tiene por el logueado. Hasta aquí perfecto.


Lo único que observo es que, cuando no marco ninguna intervención, si ejecuto la sentencia de cambio, TODAS las intervenciones que tiene esa colección me la asigna al operario logueado... como podría controlar que si no hay selección el procedimiento no haga nada?


Muchas gracias.

0 Votos

Iniciar sesión o Registrarse para publicar un comentario