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

Pasar como parametro nombre de columna

Estas en el tema de Pasar como parametro nombre de columna en el foro de SQL Server en Foros del Web. Hola amigos de foros del web presente un problema... estoy desarrollando un Procedimiento alamcenado que recibe como parametro el nombre del campo a consultar: pero ...
  #1 (permalink)  
Antiguo 19/06/2009, 14:31
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Pasar como parametro nombre de columna

Hola amigos de foros del web presente un problema...
estoy desarrollando un Procedimiento alamcenado que recibe como parametro el nombre del campo a consultar:

pero no se porque motivo no devuelve ningun registro, apesar que todo esta bien(eso creo).,

como puedo pasar como parametro el nombre de la columna de la tabla:

tengo:
Código:
alter PROCEDURE SP_LISTAR_CONCEPTO_DE_PAGO
@pvarRegimen  char(20)
AS
SELECT codigo,descripcion FROM M_ConcePago WHERE @pvarRegimen='1' ORDER BY codigo
GO
los campos son :
Lquinta
Lcas
Lcuarta

y cuando el select simple osea: select * from tabla where Lquinta='1' ORDER BY codigo

funka normal, pero cuando ejecuto el procedimiento, no devuelve ningun registro...
exec SP_LISTAR_CONCEPTO_DE_PAGO 'Lquinta'
espero su ayuda gracias....
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #2 (permalink)  
Antiguo 19/06/2009, 14:33
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Pasar como parametro nombre de columna

Busca en este mismo foro: QUERY DINAMICO

Con sus pros y contras
  #3 (permalink)  
Antiguo 19/06/2009, 14:39
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Pasar como parametro nombre de columna

No hay algun post al respecto.... ! sobre query dinamico

.... :(
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #4 (permalink)  
Antiguo 19/06/2009, 14:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Pasar como parametro nombre de columna

Pues que extraño, yo he puesto mas de 1 QUERY DINAMICO (para que aparezca)

DECLARE @Tabla sysname
DECLARE @Consulta NVARCHAR(255)
SET @Tabla = 'Cliente'
SET @Consulta = 'SELECT * FROM ' + @Tabla
EXEC sp_executesql @Consulta
  #5 (permalink)  
Antiguo 19/06/2009, 14:48
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Pasar como parametro nombre de columna

Nada men no funka

alter PROCEDURE SP_LISTAR_CONCEPTO_DE_PAGO
@flag char(20)
AS
DECLARE @pvarRegimen sysname;
SET @pvarRegimen=@flag;
SELECT codigo,descripcion FROM M_ConcePago WHERE @pvarRegimen='1' ORDER BY codigo
GO
exec SP_LISTAR_CONCEPTO_DE_PAGO 'Lquinta'
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #6 (permalink)  
Antiguo 19/06/2009, 14:51
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Pasar como parametro nombre de columna

tu query, en NADA se parece al que te mande...........
  #7 (permalink)  
Antiguo 19/06/2009, 14:53
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Pasar como parametro nombre de columna

pero el que me mandaste no tiene ningun parametro por logica asigne el valor SET @pvarRegimen=@flag;

pense que el detalle estaba en declarar la variable tipo sysname !

o me equivoco ?
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #8 (permalink)  
Antiguo 19/06/2009, 14:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Pasar como parametro nombre de columna

ALTER PROCEDURE SP_LISTAR_CONCEPTO_DE_PAGO
@flag char(20)
AS
DECLARE @SQLString NVARCHAR(255)
SET @pvarRegimen = N'SELECT codigo,descripcion FROM M_ConcePago WHERE' + @flag + '=''1'' ORDER BY codigo'
EXEC sp_executesql @pvarRegimen
GO
exec SP_LISTAR_CONCEPTO_DE_PAGO 'Lquinta'
  #9 (permalink)  
Antiguo 19/06/2009, 15:06
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Pasar como parametro nombre de columna

Estas rayado men ?
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #10 (permalink)  
Antiguo 19/06/2009, 15:55
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Pasar como parametro nombre de columna

Si men, te equivocas, lo que yo te mande fue un "ejemplo" de como se puede hacer un QUERY DINAMICO, pero bueno, despues me tome un poco de tiempo para hacer el que necesitas.

Saludos
  #11 (permalink)  
Antiguo 22/06/2009, 09:17
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Pasar como parametro nombre de columna

es que no funka lo que posteas.. ! ese es el problema estas haciendo un EXEC, dentro de un store procedure, estas ejecutando un procedimiento como parametro un @variable que no es asi... cheka bien lo que posteas...


alguien puede ayudarme *?
__________________
Anthony Vidal Contreras | @AnthonyVidalC | Skype: vidalsystem | [email protected]
  #12 (permalink)  
Antiguo 23/06/2009, 10:06
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Pasar como parametro nombre de columna

primero cuando tu declaras una variable char esta variable char de una longitud de 20 como tu la declaras siempre tomara los 20 valores es decir

si declaro esta variable

Declare @Code Char(10)

Set @Code = '123'

en verdad @Code valdra '123 '

ves la diferencia char siempre toma todo el ancho que ha sido declarado por esto es mejor que pases esa declaracion de la variable a un tipo varchar

Código sql:
Ver original
  1. ALTER PROCEDURE SP_LISTAR_CONCEPTO_DE_PAGO
  2. @flag VARCHAR(20)
  3. AS
  4. DECLARE @SQLString NVARCHAR(255)
  5. SET @pvarRegimen = N'SELECT codigo,descripcion FROM M_ConcePago WHERE ' + @flag + ' = ''1'' ORDER BY codigo'
  6. EXEC sp_executesql @pvarRegimen
  7. GO
  8. EXEC SP_LISTAR_CONCEPTO_DE_PAGO 'Lquinta'
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones

Última edición por Dradi7; 23/06/2009 a las 10:39
  #13 (permalink)  
Antiguo 25/06/2009, 20:21
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Pasar como parametro nombre de columna

Gracias Dradi7

Debo pedir a Dios mucha, pero mucha calma........
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 16:13.