Empezar un tema nuevo

Ejemplo de definición de proceso batch en stored procedure

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


Iniciar sesión o Registrarse para publicar un comentario