Foros del Web » Programando para Internet » ASP Clásico »

Procedimiento Almacenado

Estas en el tema de Procedimiento Almacenado en el foro de ASP Clásico en Foros del Web. Hola tengo los siguientes Procedimetos Almcenado (SP) SP1 : SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER PROC SP_ListaUsuario AS -- Otras variables DECLARE ...
  #1 (permalink)  
Antiguo 27/10/2006, 09:26
 
Fecha de Ingreso: septiembre-2003
Mensajes: 265
Antigüedad: 20 años, 8 meses
Puntos: 1
Pregunta Procedimiento Almacenado

Hola tengo los siguientes Procedimetos Almcenado (SP)

SP1 :
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER PROC SP_ListaUsuario
AS

-- Otras variables
DECLARE @strSELECT varchar(5000)


SET @strSELECT = ''

SET @strSELECT = @strSELECT + 'SELECT DISTINCT l.ID as login, a.Name, a.Email, a.nation '
SET @strSELECT = @strSELECT + 'FROM dbo.login l INNER JOIN '
SET @strSELECT = @strSELECT + 'dbo.account a ON l.AID = a.AID '
SET @strSELECT = @strSELECT + 'ORDER BY login '



PRINT @strSELECT
EXEC (@strSELECT)



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SP2:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER PROC SP_ListaUsuario
AS


SELECT DISTINCT l.ID as login, a.Name, a.Email, a.nation
FROM dbo.login l INNER JOIN
dbo.account a ON l.AID = a.AID
ORDER BY login



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

si se dan cuenta losdos son iguales la unica diferencia es que el SP1 esta con variable la consulta y el SP2 NO.

Ejecuto los 2 SP en el query analizer del sql server y los dos me tiran los mismo resultados

pero cuando hago la llamada desde mi codigo asp (pagina) y deseo mostrar los datos el SP2 me funciona perfectamnete, pero al hacerlo con el SP1 me sale el siguiente error:

ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.
/rohispano/new2/administrador/usuario_lista.asp, line 77


y la linea 77 es:
if Not rs.EOF then


y la llamada l SP es
cmd.ActiveConnection = ConectarLocal2
cmd.CommandText="SP_ListaUsuario"
cmd.CommandType=4

set rs = cmd.execute


Alguna Idea????
gracias
  #2 (permalink)  
Antiguo 27/10/2006, 09:31
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
¿ cuantas veces abres el recordset ?
¿ Puedes poner un poco mas de codigo ?
  #3 (permalink)  
Antiguo 27/10/2006, 09:40
 
Fecha de Ingreso: septiembre-2003
Mensajes: 265
Antigüedad: 20 años, 8 meses
Puntos: 1
Aqui esta el codigo
Código:
temp = startCounter
                    if Not rs.EOF then 'ESTA ES LA LINEA 77
                       	Do While temp > 0
               			temp = temp - 1
               			rs.MoveNext 
               		loop
               	    end if
                         		
               		end_num = 0
               		num = startCounter
               		counter = num + 20
                         		
			DO WHILE NOT rs.EOF
                       		if num < counter then
                       			num = num + 1
					%>
					<tr>
					<td>
						<%=rs(0)%>
					</td>
					<td>
						<%=rs(1)%>
					</td>
					<td>
						<%=rs(2)%>
					</td>
					<td>
						<%=rs(3)%>
					</td>
					</tr>
					<%
					rs.MoveNext
					if rs.eof then
						EXIT DO
					end if
				else
					end_num = 1
					EXIT DO
				end if
			LOOP
  #4 (permalink)  
Antiguo 27/10/2006, 13:09
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Pero.... hay código que estes ocupando "antes" donde abras el recordset y lo cierres ?
  #5 (permalink)  
Antiguo 27/10/2006, 13:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, a golpe de vista, uno te esta regresando un recordset y el otro no, el error puede ser el tipo de cursor por default que se genera en una llamada de este tipo:

Set rs = cmd.Execute()

Si esperas un recordset, entonces creo que deberias hacer mejor esto:

Set rs = Server.CreateObject("ADODB.Recordset")

rs.Open cmd

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:24.