Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

SQL Server: Procedimiento Almacenado con Tabla temporal

Estas en el tema de SQL Server: Procedimiento Almacenado con Tabla temporal en el foro de SQL Server en Foros del Web. Tengo un procedimiento almacenado en SQL Server, el cual me devuelve un conjunto de registros. Para obtener estos registros debo realizar un barrido por diferentes ...
  #1 (permalink)  
Antiguo 01/10/2004, 09:19
 
Fecha de Ingreso: agosto-2004
Ubicación: Argentina
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
SQL Server: Procedimiento Almacenado con Tabla temporal

Tengo un procedimiento almacenado en SQL Server, el cual me devuelve un conjunto de registros. Para obtener estos registros debo realizar un barrido por diferentes tablas de la base de datos, por lo tanto utilizo una tabla temporal dentro del SP para obtener un conjunto previo de resultados los cuales luego lo filtro mediante otras tablas y devuelvo el conjunto final de registros.
Al ejecutar el procedimiento desde el analizador de consultas, me devuelve los datos correctamente, pero si llamo el procedimiento desde Visual Basic, y asigno el resultado del procedimiento a un recordset, siempre me devuelve vacio. Estoy seguro que el problema son las tablas temporales. ¿existe alguna manera para solucionar esto?
  #2 (permalink)  
Antiguo 01/10/2004, 12:20
 
Fecha de Ingreso: agosto-2004
Ubicación: Argentina
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
Agregue SET NOCOUNT ON al inicio del SP, y SET NOCOUNT OFF al final del SP y funciono.
  #3 (permalink)  
Antiguo 07/10/2004, 11:55
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Ayuda en tabla temporal

Hola me podrias ayudar a crear una tabla temporal, mira en VB lo hago en un instante, pero me estan pidiendo que lo haga en un Procedimiento almacenado en el Sql server.
Tengo un conjunto de registros, me interes solo el campo codigo ya que al insertar un nuevo registro este debera aumenta de valor, realizo la sentencia, un sql sencillo, pero como obtengo el resultado de esto en una variable, para asi sumarle uno al campo codigo que me devolvio, una posibilidad me han dicho es con cursores, pero esto carga mucho en memoria, la otra es crear una tabla temporal, pero no se como hacerlo.
Podrias ayudarme.

Saludos.
Nilton.
__________________
<script language=VbScript>
msgbox "Gracias por Leer este mensaje, si puedes respondelo"
</script>
  #4 (permalink)  
Antiguo 07/10/2004, 12:14
 
Fecha de Ingreso: agosto-2004
Ubicación: Argentina
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
Espero que esto te sirva:

Código:
CREATE PROCEDURE SP_CrearTemporal
AS
	
SET NOCOUNT ON

---Creas la tabla temporal
CREATE TABLE #Tabla_Temp (IdPersona int, Nombre varchar(50))

---Insertas datos en esta
INSERT INTO #Tabla_Temp (IdPersona, Nombre) VALUES (1,'Juan')
INSERT INTO #Tabla_Temp (IdPersona, Nombre) VALUES (2,'Jose')

---Devuelves los datos de la tabla temporal
SELECT * FROM #Tabla_Temp

---Borras la tabla temporal, si queres aca, sino lo tenes que hacer en otro SP
DROP TABLE #Tabla_Temp

SET NOCOUNT OFF


GO
  #5 (permalink)  
Antiguo 07/10/2004, 13:27
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Gracias, Pero como trabajo con un campo de esta tabla en el procedure, por ejemplo algo como esto :
Valor = Campo1 + 1
__________________
<script language=VbScript>
msgbox "Gracias por Leer este mensaje, si puedes respondelo"
</script>
  #6 (permalink)  
Antiguo 07/10/2004, 13:58
 
Fecha de Ingreso: agosto-2004
Ubicación: Argentina
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
Si entendi lo que me preguntas, queres actualizar los valores de esta tabla temporal, simplemente tenes que hacer

Código:
UPDATE #Tabla_Temp SET Valor = Valor + 1 WHERE Id = 1000
si no es este explicame un poco mejor lo que queres hacer y veo si te puedo ayudar.
  #7 (permalink)  
Antiguo 07/10/2004, 15:19
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
gracias nuevamente, mira lo que necesito es despues de recuperar el valor de un campo "x" de la tabla empleados, sumarle uno para despues con ese valor y otros crear un nuevo registro en mi tabla de empleados

Ejemplo: 0310001, Empleado1, Su Casa.
0310002, Empleado2, Su Casa
estos son los datos que deberia recuperar con el select:

sql="select * from empleados where left(IdCodigo, 4) = '0310' order by IdCodigo"
me ubico en el ultimo registro y para insertar el nuevo registro debo de sumar:
NuevoCodigo = CAST(substring(IdCodigo, 5, 3) AS int) + 1

.....
....
__________________
<script language=VbScript>
msgbox "Gracias por Leer este mensaje, si puedes respondelo"
</script>
  #8 (permalink)  
Antiguo 08/10/2004, 06:19
 
Fecha de Ingreso: agosto-2004
Ubicación: Argentina
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
Código:
DECLARE @Id AS varchar(8)
DECLARE @Codigo AS int
DECLARE @NuevoId AS varchar(8)


SELECT TOP 1 @Id = IdCodigo FROM #Empleados WHERE left(IdCodigo, 4) = '0310' order by IdCodigo DESC

SET @Codigo = CAST(substring(@Id, 5, 4) AS int) + 1

SET @NuevoId = '0310' +  RIGHT('0000' + CAST(@Codigo AS varchar(4)),4)

INSERT INTO #Empleados (Id, Nombre, Dir) VALUES (@NuevoId,'Juan','Dire')
  #9 (permalink)  
Antiguo 08/10/2004, 10:21
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 117
Antigüedad: 22 años, 3 meses
Puntos: 0
Muchas gracias por tu respuesta, es justo lo que necesitaba.

Nilton
__________________
<script language=VbScript>
msgbox "Gracias por Leer este mensaje, si puedes respondelo"
</script>
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.
Tema Cerrado




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