none
delete e update numa função RRS feed

  • Pergunta

  • É possível utilizar os comandos DELETE e UPDATE dentro de uma função no SQL SERVER 2005?

    USE

     

    [SUPORT_OS2_teste]

    GO

    /****** Object: StoredProcedure [dbo].[RETIRAR_FILA_TESTE] Script Date: 05/28/2009 16:12:46 ******/

    ALTER function[dbo].[RETIRAR_FILA_TESTE]

    (

     

    @ID_TECNICO1 INT ,

    @TOTAL

    INT

    )

     


    RETURNS CHAR(16)
    AS

     


    BEGIN
    DECLARE @ID_TECNICO INT

     

    --DECLARE @TOTAL INT

     

    SET @ID_TECNICO = 0

    SET @ID_TECNICO = (SELECT ID_TECNICO FROM FILA_ATENDIMENTO WHERE ORDEM = '1')

     

    IF (@ID_TECNICO > 0)

     

    BEGIN

     

    DELETE FROM FILA_ATENDIMENTO WHERE ID_TECNICO = @ID_TECNICO

     

    SET @TOTAL = (SELECT COUNT(ORDEM) AS TOTAL FROM FILA_ATENDIMENTO)

     

    DECLARE @I INT

     

    SET @I = '0'

     

    WHILE (@I < @TOTAL)

     

    BEGIN

     

    UPDATE FILA_ATENDIMENTO SET ORDEM = @I + '1' WHERE ORDEM = @I + 2

     

    SET @I = @I + '1'

     

    END

     

    END

     

     

    quinta-feira, 28 de maio de 2009 20:20

Respostas

  • Wagner,

    Você não pode usar UPDATE ou DELETE em function, pelo seu cenário uma proc resolve o seu problema.

    Att,
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta wagner_nogueira sexta-feira, 29 de maio de 2009 12:43
    quinta-feira, 28 de maio de 2009 22:19

Todas as Respostas

  • Wagner,

    Você não pode usar UPDATE ou DELETE em function, pelo seu cenário uma proc resolve o seu problema.

    Att,
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta wagner_nogueira sexta-feira, 29 de maio de 2009 12:43
    quinta-feira, 28 de maio de 2009 22:19
  • Boa Tarde,

    Functions não podem alterar o estado do banco de dados. Não é permitido a uma function efetuar UPDATEs, INSERTs, DELETEs, CREATE, ALTER, DROP, etc. Se uma function for executada ela não pode transformar o estado do banco de dados e por isso esse tipo de operação não é permitida.

    Também é vedado a uma function utilizar outros comandos de mudança de estado de uma função como SET DATEFORMAT, SET LANGUAGE, etc

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como executar tarefas ao iniciar o SQL Server ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!570.entry
    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 29 de maio de 2009 17:39