Hola si alguien me puede auxiliar en el siguiente problema, se los agradecere mucho.
En este script ocupo el comando bcp para extraer información de una tabla, armo toda la sentencia en una variable (@query) que interpreta el comando y manda la información a un archivo de texto.
El proble que tengo, es que en esa instrucción de sql especificamente en la clausula where quiero ocupar variables para condicionar el resultado y aunque se encuentran declaradas me manda errores como: "la variable debe declararse", etc y si le pongo el valor dierectamente, se hace pelotas con las comillas. Este es el script.
esta es la parte donde truna el código:
where PersonnelTypeDescription = @Type and employeenumber=@employ, si se dan cuenta las variables ya están declaradas.
Declare @employ varchar(12),
@Type varchar(12)
SET @employ = '2002528'
SET @Type = 'permanente'
--Select employeenumber, Convert(char(12), Convert(SmallDateTime, hostdate - 2), 103) as fecha, Convert(char(8), Convert(SmallDateTime, hostdate -2), 108) as Hora, readerdescription From SecurePerfectHistory.dbo.BadgeHistoryTable where PersonnelTypeDescription = @Type and employeenumber = @employ and hostdate >= (DATEADD(day, -28, getdate())) + 2
DECLARE @FileName varchar(50)
Declare @archivo_txt varchar(100)
Declare @administrador_SQL varchar(50)
Declare @password_sql varchar(50)
Declare @base_datos varchar(50)
--- configurar estos datos de acuerdo al servidor
SET @FileName = REPLACE('c:\SecurePerfect_'+CONVERT(char(8),GETDAT E(),1)+'.txt','/','-')
Set @administrador_SQL='sa'
Set @password_sql=''
Set @base_datos='SecurePerfectHistory'
declare @query varchar(6000)
--set @query = 'Select employeenumber, Convert(char(12), Convert(SmallDateTime, hostdate - 2), 103) as fecha, Convert(char(8), Convert(SmallDateTime, hostdate -2), 108) as Hora, readerdescription From SecurePerfectHistory.dbo.BadgeHistoryTable where PersonnelTypeDescription = @Type and employeenumber=@employ and hostdate >= (DATEADD(day, -28, getdate())) + 2'
set @query = 'Select employeenumber, Convert(char(12), Convert(SmallDateTime, hostdate - 2), 103) as fecha, Convert(char(8), Convert(SmallDateTime, hostdate -2), 108) as Hora, readerdescription From SecurePerfectHistory.dbo.BadgeHistoryTable where hostdate >= (DATEADD(day, -28, getdate())) + 2 AND PersonnelTypeDescription = @Type'
--- obtiene el número de registros procesados
exec (@query)
declare @registros int
set @registros = @@rowcount
--- Comando bcp para generar el archivo de texto plano.
DECLARE @chr_BCP_ARCHIVO VARCHAR(4000)
SELECT @chr_BCP_ARCHIVO = 'bcp "' + @query + '" queryout '+ @FileName + ' -c -U -t,'
EXEC master..xp_cmdshell @chr_BCP_ARCHIVO