none
Procedimientos realizados con cursores y los quiero manejar en visual studio.net RRS feed

  • Pregunta

  • Hola a todos os comento: he hecho un procedimiento con cursores en sql 2005 y lo que me hace es recorrer una tabla y voy mirando si están los números consecutivos de IdActivo, si no existe un número lo quiero guardar en otra tabla Indices para después poder meter registros con ese IdActivo que no esta utilizado. El procedimiento no devuelve nada al programa de visual studio y ni le mando nada por parámetros, solo quiero ejecutar el procedimiento a través de visual studio y ya esta. He metido el procedimiento en el dataset del programa y lo llamo pero se queda en espera mucho tiempo y me da error por ello.

    Lo llamo así:

    Dim ds As New DSOpusTableAdapters.TransacTableAdapter

    El procedimiento es este:

    ds.GetData()

    USE [OpusQuantum]

    GO

    /****** Object:  StoredProcedure [dbo].[spu_addCliente]    Script Date: 04/17/2013 10:26:20 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO

    alter PROCEDURE [dbo].[Transac] 

               

    as

    BEGIN TRY

    declare @IdAct int,@num int,@TodosIdAct nvarchar(500)

    declare @IdActivos table(IdAct int)

    declare cActivos cursor for select IdActivo from Activos

    --Abrir cursor

    open cActivos

    --Lectura de la primera fila del cursor

    fetch next from cActivos into @IdAct

    set @num=@IdAct

    set @TodosIdAct = ''

    --Empiezo a leer el cursor hasta el final

    while (@@FETCH_STATUS =0)

                BEGIN TRAN

                --Lectura de la primera fila del cursor

                fetch next from cActivos into @IdAct

                set @num = @num + 1

                if @num <= @IdAct

                            begin

                            if @TodosIdAct = ''

                                       begin

                                                   insert into Indice (IdActivo ) values (@num)

                                       end

                            end

                                       

                COMMIT

                END TRY

                BEGIN            CATCH

                            ROLLBACK

                            PRINT ERROR_MESSAGE()

                END

    CATCH




    • Editado charoeci1 miércoles, 17 de abril de 2013 9:11
    miércoles, 17 de abril de 2013 9:08

Todas las respuestas

  • 'Set up Connection object and Connection String for a SQL Client Dim SQLCon As New SqlClient.SqlConnection SQLCon.ConnectionString = "Data Source=Server;User ID=User;Password=Password;" SQLCon.Open() Dim SQLCmd As New SqlClient.SQLCommand

    SQLCmd.CommandText = "Transac" ' Stored Procedure to Call SQLCmd.CommandType = CommandType.StoredProcedure 'Setup Command Type SQLCmd.Connection = SQLCon 'Active Connection

    Dim res As Integer = SQLCmd.ExecuteNonQuery()



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos


    miércoles, 17 de abril de 2013 9:35
  • me sigue dando el mismo error: el período de tiempo de espera caducó antes de completar la operación o el servidor no responde.

    El servidor si responde porque esta es la misma conexión que tengo a la base de datos con el dataset que tengo en el programa y me funciona.

    miércoles, 17 de abril de 2013 15:37
  • Echa un vistazo a este enlace te explica las posibles causas de ese error..

    http://msdn.microsoft.com/es-es/library/ms190181(v=SQL.105).aspx

    Prueba a poner CommandTimeout del tu command a 60 por ejemplo


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 17 de abril de 2013 15:54