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

ayuda con procedimiento dinamico

Estas en el tema de ayuda con procedimiento dinamico en el foro de SQL Server en Foros del Web. creo que no tengo mas que explicar mas que esto deseo realizar esta consulta: SELECT COUNT(*) FROM cobertab WHERE TIPO_CLAVE ='B' en un procedimiento dinamico ...
  #1 (permalink)  
Antiguo 03/01/2006, 12:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
ayuda con procedimiento dinamico

creo que no tengo mas que explicar mas que esto deseo realizar esta consulta: SELECT COUNT(*) FROM cobertab WHERE TIPO_CLAVE ='B' en un procedimiento dinamico lo he realizado asi.

alter procedure porcentaje_030106
@NombreTabla VarChar(1000),
@buscar varchar(1000)
AS
DECLARE @sSQL VarChar(1000)--
DECLARE @SQL VARCHAR(1000)---
DECLARE @SQL2 VARCHAR(1000)---

------------------- SACO CLAVES EN CERO PARA GENERAL
SELECT @SQL = 'SELECT COUNT(*) AS [TOTAL_CLAVES_CERO] FROM '
SELECT @sSQL = @SQL + @NombreTabla --
SELECT @SQL2 = @sSQL + ' WHERE TIPO_CLAVE = 'B''
EXEC ( @SQL2)---ejecuto operacion
GO
return


si lo ejecuto en el query analizer no hay problema el problema es cuando paso el nombre de la tabla de la siguiente manera exec porcentaje_030106 @NombreTabla=cobertab me manda el siguiente error : Invalid column name 'B'.
no se como hacerlo se los agradeceria si me ayudaran
  #2 (permalink)  
Antiguo 03/01/2006, 13:07
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Es debido al entrecomillado de la B. Revisa con:
Código:
alter procedure porcentaje_030106
@NombreTabla VarChar(1000),
@buscar varchar(1000)
AS
DECLARE @sSQL VarChar(1000)--
DECLARE @SQL VARCHAR(1000)---
DECLARE @SQL2 VARCHAR(1000)---

------------------- SACO CLAVES EN CERO PARA GENERAL
SELECT @SQL = 'SELECT COUNT(*) AS [TOTAL_CLAVES_CERO] FROM '
SELECT @sSQL = @SQL + @NombreTabla --
SELECT @SQL2 = @sSQL + ' WHERE TIPO_CLAVE = ''B'''
EXEC ( @SQL2)---ejecuto operacion
GO
return
Pero mejor aún con:
Código:
alter procedure porcentaje_030106
@NombreTabla VarChar(1000),
@buscar varchar(1000)
AS
DECLARE @SQL VARCHAR(3000)

SELECT @SQL = 'SELECT COUNT(*) AS [TOTAL_CLAVES_CERO] FROM '
SELECT @SQL = @SQL + @NombreTabla --
SELECT @SQL = @SQL + ' WHERE TIPO_CLAVE = ''B'''
EXEC sp_executesql @SQL ---ejecuto operacion
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 04/01/2006, 09:36
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 4 meses
Puntos: 0
Gracias por tu respuesta

ya solucione el problema el codigo del procedimiento me quedo algo asi:

alter procedure nivel_inversion_brio_almacen
@NombreTabla VarChar(1000)
AS
DECLARE @buscar varchar(1000)
DECLARE @sSQL VarChar(1000)--
DECLARE @SQL VARCHAR(1000)---
DECLARE @SQL2 VARCHAR(1000)---
SELECT @buscar='B'
------------------- SACO CLAVES EN CERO PARA GENERAL
SElECT @sSQL = 'SET QUOTED_IDENTIFIER OFF
SELECT count(*) as [claves_brio_almacen]
FROM ' + @NombreTabla + '
WHERE tipo_clave = "' + @buscar + '"'
--select @sSQL='select * from ' + @NombreTabla
exec(@sSQL)

GO
return



por si a alguien le sirve
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 23:52.