SQL - Problema con comando BCP y procedimiento almacenado de sql server

   
Vista:

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por jesus lindado (6 intervenciones) el 19/07/2017 16:05:43
Hola a todos quisiera me pudieran ayudar con lo siguiente:

Tengo un procedimiento almacenado que me funciona bien y es este.


CREATE PROC [dbo].[_XML3]
as

EXECUTE master.dbo.xp_cmdshell 'bcp "select * from [MWS].[dbo].[V_All] where [JOB_date_Submitted] BETWEEN ''06/06/2017 00:00:00'' AND ''06/06/2017 23:59:59'' order by [JOB_date_Submitted]" QUERYOUT E:\trackingDiario\prueba_jes.txt -c -Spmcarvajal -Umws -PMWS'


Pero cuando lo hago con parametros de entrada para colocarlos en la consulta así:


CREATE PROC [dbo].[_XML3]

@fechainicial datetime,@fechafinal datetime

as

EXECUTE master.dbo.xp_cmdshell 'bcp "select * from [MWS].[dbo].[V_All] where [JOB_date_Submitted] BETWEEN @fechainicial AND @fechafinal order by [JOB_date_Submitted]" QUERYOUT E:\trackingDiario\prueba_jes.txt -c -Spmcarvajal -Umws -PMWS'
go


De la segunda forma no me funciona dándome el este error:

SQLState = 37000, NativeError = 137
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Must declare the scalar variable "@fechainicial".
SQLState = 37000, NativeError = 8180
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Statement(s) could not be prepared.
NULL


Si pudieran ayudarme se los agradeceria
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por Isaias (933 intervenciones) el 19/07/2017 16:28:33
Es SQL Server?????

Claro que NO TE VA A FUNCIONAR ya que las variables no pertenecen al entorno del BCP. Utilice query dinamico


1
2
3
4
5
DECLARE @SQLString nvarchar(1000)
 
SET @SQLString = N'bcp "select * from [MWS].[dbo].[V_All] where [JOB_date_Submitted] >= ' + @fechainicia + ' and [JOB_date_Submitted] <= ' + @fechafinal + ' order by [JOB_date_Submitted]" QUERYOUT E:\trackingDiario\prueba_jes.txt -c -Spmcarvajal -Umws -PMWS'
 
EXECUTE sp_executesql @SQLString

Recuerde que las fechas no deben compararse con BETWEEN

Pruebe y comente si le fue funcional
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por jesus lindado (6 intervenciones) el 19/07/2017 16:41:18
y si realizo este procedimiento para no requerir parámetros de entrada?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ALTER PROC  [dbo].[_XML3]
 
as
declare @fechainicial datetime, @fechafinal datetime;
DECLARE @SQLString nvarchar(4000)
 
SELECT @fechainicial= DATEADD(dd,DATEDIFF(dd,0,GETDATE()),-1)
 
SELECT @fechafinal= DATEADD(ms,-3,DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0))
 
 
SET @SQLString = 'bcp "select * from [MWS].[dbo].[V_All] where [JOB_date_Submitted] >= ' + @fechainicial + ' and [JOB_date_Submitted] <= ' + @fechafinal + ' order by [JOB_date_Submitted]" QUERYOUT E:\trackingDiario\prueba_jes.txt -c -Spmcarvajal -Umws -PMWS'
 
EXECUTE sp_executesql @SQLString

si lo hago así me bota el siguiente error:

Msg 241, Level 16, State 1, Procedure _XML3, Line 13
Conversion failed when converting date and/or time from character string.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por Isaias (933 intervenciones) el 19/07/2017 17:07:26
¿Estas pasando los parametros con formato ANSI (yyyymmdd)?, ¿como los estas pasando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por jesus lindado (6 intervenciones) el 19/07/2017 17:10:37
los estoy pasando "MM/dd/YYYY HH:mm:ss"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por Isaias (933 intervenciones) el 19/07/2017 18:14:50
TODAS las fechas SQL Server y muchos motores de datos deben manejarse en formato ANSI (yyyymmdd), con esto, no tendras problemas de formato con las fechas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por jesus lindado (6 intervenciones) el 19/07/2017 19:11:29
lo mismo dije yo pero ese es el formato que debe llevar según los que hicieron la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por Isaias (933 intervenciones) el 19/07/2017 19:19:01
El formato en que lo presentes al CLIENTE (Front), es independiente de COMO lo almacena el motor de la base de datos, TODOS los motores, lo guardan de forma NUMERICA, con formato ANSI.

Es por eso que se debe comparara con >= y <=, eso lo hara 100% mas eficiente en su busqueda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por jesus lindado (6 intervenciones) el 19/07/2017 20:29:37
disculpa revisé bien y si tiene este formato yyyymmdd

Entonces como podría hacer para que funcione mi procedimiento?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por Isaias (933 intervenciones) el 20/07/2017 17:13:00
ejecuta

1
SELECT ISDATE('ponaquitufecha')

¿Que resultado te da?, es mas, pasame tus 2 parametros y yo los checo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con comando BCP y procedimiento almacenado de sql server

Publicado por jesus lindado (6 intervenciones) el 21/07/2017 16:47:06
Ya finalmente pude hacerlo pero tengo un inconveniente y es que los nombres de los campos de la tabla debo copiarlos también en el archivo txt. ¿Sabrá como puedo hacer? hasta ahora solo me está copiando los registros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar