Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-11-2006
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
Exclamation procedimientos almacenados

Hola, tengo un procedimientos almacenado:

Código SQL [-]
CREATE PROCEDURE [dbo].[Buscar_disponibilidad]  (@fechaent smalldatetime,@fechasal smalldatetime,@codhab char(10))
AS
begin transaction
select @codhab from [0001] where fecha>=@fechaent and fecha<=@fechasal
commit
GO

y resulta que cuando le paso los parametros, la consulta me devuelve siempre el nombre de la columna en lugar de los datos que contiene, como puedo hacer para que me devuelva los datos??
Responder Con Cita
  #2  
Antiguo 09-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
Hola David,

Puedes dar mas datos sobre lo que pretendes con ese SP? Asi como un poco de la estructura de la tabla que lees.
Por de pronto yo veo que seleccionas @codhab, no haces referencia a ningun campo de la tabla.

Espero que te sea de ayuda.

Oscar Noe
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #3  
Antiguo 09-11-2006
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
lo que quiero es mostras la columna con todas sus filas, la tabla es la siguiente:

FECHA,TIPOA,TIPOB,TIPOC

y quiero que el procedimiento me devuelva la columna que yo quiero y las filas que me cumplan las fechas que le paso.
Responder Con Cita
  #4  
Antiguo 09-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
Pues lo mejor sera que el SP use SQL dinamico (te remito al procedimiento almacenado sp_executesql, que te permitira hacer lo que pides).
Estuve mirando la posibilidad de usar el tipo sysname ( = nvarchar(128)), pero hice una prueba y obtuve el mismo resultado.

Ejemplo
Código SQL [-]
CREATE PROCEDURE [dbo].[Buscar_disponibilidad]  (@fechaent smalldatetime,@fechasal smalldatetime,@codhab sysname)
AS
begin transaction
  declare @tsql nvarchar(4000)
  set @tsql = 'select '+char(13)+@codhab+char(13)+' from [0001]'+char(13)+'where fecha>= '''+
  convert(varchar(20),@fechaent)+  ''' and fecha<='''+convert(varchar(20),@fechasal)+''''
  exec sp_executesql @tsql
commit

A partir de ahi, lo que tu quieras complicarlo...

Espero que te sea de ayuda...

Oscar Noe
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #5  
Antiguo 09-11-2006
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
Y para hacer un update con @codhab como seria?
Responder Con Cita
  #6  
Antiguo 09-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
... mas de lo mismo... un update normal y corriente

Ejemplo

Código SQL [-]
CREATE PROCEDURE [dbo].[Actualizar_disponibilidad]  (@fechaent smalldatetime,@fechasal smalldatetime,@codhab sysname, @codhabVALUE float)
AS
begin transaction
  declare @tsql nvarchar(4000)
  set @tsql = 'update [0001] set  '+char(13)+@codhab+'='+ Cast(@codhabValue as varchar(20))+char(13)+' where fecha>= '''+
  convert(varchar(20),@fechaent)+  ''' and fecha<='''+convert(varchar(20),@fechasal)+''''
  exec sp_executesql @tsql
commit

No se que tipo de datos tiene @codhabValue, le puse float. Al gusto de cada uno. Si es un tipo cadena recuerda ponerle las comillas simples antes, como lo hice en los campos de fecha.

Es lo mismo construir una query dinamica en delphi que en T-SQL solo que debes adaptarte a cada uno. Las comillas es un buen ejemplo del tema, y provoca mas de un error, segun el tipo de dato las necesite o no.

A partir de ahi, lo que tu quieras complicarlo...

Espero que te sea de ayuda...

Oscar Noe
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
  #7  
Antiguo 09-11-2006
davidgaldo davidgaldo is offline
Miembro
 
Registrado: nov 2003
Posts: 220
Poder: 21
davidgaldo Va por buen camino
pq sqlserver me guarda las fechas al reves, primero el mes y luego el día,
ya que al buscar mediante una consulta tengo que invertir el formato?
Responder Con Cita
  #8  
Antiguo 09-11-2006
oscarnoe oscarnoe is offline
Miembro
 
Registrado: jul 2006
Posts: 60
Poder: 18
oscarnoe Va por buen camino
esa pregunta se merece un hilo nuevo.
__________________
No dejes camino viejo por sendero nuevo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procedimientos almacenados AS/400 Carlos A Ortega DB2 1 12-12-2006 00:32:39
procedimientos almacenados datorar Conexión con bases de datos 8 03-01-2006 17:05:43
procedimientos almacenados Gabriel2 SQL 1 13-01-2005 14:50:09
Procedimientos Almacenados tuto Conexión con bases de datos 0 08-11-2004 14:42:05
Procedimientos almacenados VS UDF rqc Firebird e Interbase 6 18-03-2004 01:29:46


La franja horaria es GMT +2. Ahora son las 05:29:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi