SQL Server - error de comillas en BCP

 
Vista:

error de comillas en BCP

Publicado por Flor (4 intervenciones) el 29/03/2023 19:03:42
Buen dia compañeros, tengo este procedimiento que ejecuta un BCP, el problema que tengo esque al ponerle una clausula where a mi consulta me da error ya que es un char y se necesita colocar emtre comillas, ya le di vuelta a la consulta pero no funciona mas que con esta estructura

USE [bd_electrum2CST]
GO
/****** Object: StoredProcedure [dbo].[SP_MigraTablaDatosTecnicos] Script Date: 08/08/2022 08:28:53 p. m. FLOR ORDOÑEZ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_ReporteIndeminzacionesFIUyTIU]
@NombreArchivo VARCHAR(300),
@ConsultaSQLA nvarchar(4000)

AS
BEGIN
DECLARE @ConsultaSQL nvarchar(4000);

SET @ConsultaSQL = 'exec master..xp_cmdshell'' bcp "SELECT * FROM bd_electrum2CST.dbo.USUARIOS WHERE ESTADO = 'A' " queryout C:\Temp\'+ @NombreArchivo +'.txt -c -t, -T -Slocalhost\SQLEXPRESS'''
EXECUTE sp_executesql @ConsultaSQL;
END
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
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

error de comillas en BCP

Publicado por Isaias (4558 intervenciones) el 30/03/2023 16:32:56
WHERE ESTADO = ''A''

Colócale doble comita simple, o bien

WHERE ESTADO = ' + char(39) + 'A' + char(39)
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

error de comillas en BCP

Publicado por Flor (4 intervenciones) el 30/03/2023 19:37:25
Muchisimas gracias por el aporte, me han servido mucho, resolvi mi problema medianamente WHERE ESTADO = ''A'' y me funciono de forma estatica, modifique mi consulta a dinamica y me da error, prove de distintas formas y siempre el tema de las comillas :(

USE [bd_electrum2CST]
GO
/****** Object: StoredProcedure [dbo].[SP_MigraTablaDatosTecnicos] Script Date: 08/08/2022 08:28:53 p. m. FLOR ORDOÑEZ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_ReporteIndeminzacionesFIUyTIU]
@NombreArchivo VARCHAR(300)
AS
BEGIN
DECLARE @ConsultaSQL nvarchar(4000);

SET @ConsultaSQL = 'exec master..xp_cmdshell'' bcp "SELECT * FROM bd_electrum2CST.dbo.USUARIOS WHERE ESTADO = ''A'' " queryout C:\Temp\'+ @NombreArchivo +'.txt -c -t, -T -Slocalhost\SQLEXPRESS'''
EXECUTE sp_executesql @ConsultaSQL;
END

exec SP_ReporteIndeminzacionesFIUyTIU
'SP_RepPRUEB;
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

error de comillas en BCP

Publicado por Flor (4 intervenciones) el 31/03/2023 04:04:20
no logro que me funcione, mi problema esta cuando le hago el SET @ConsultaSQL = 'exec master..xp_cmdshell'' bcp "SELECT * FROM bd_electrum2CST.dbo.USUARIOS WHERE ESTADO = ''A'' " queryout C:\Temp\'+ @NombreArchivo +'.txt -c -t, -T -Slocalhost\SQLEXPRESS'''

Al meter entre comillas todo el procedimiento y agregar la variable para colocar la consulta dinamica es donde me da el error del where, ahora si lo hago sin asignar a alguna variable y de estatico SI me funciona
EXEC master.dbo.xp_cmdshell 'bcp "SELECT * FROM bd_electrum2CST.dbo.USUARIOS WHERE ESTADO = ''A''" queryout "C:\Temp\SP_RepDetalleIndemFIUyTIU_2020_11.txt" -c -t, -T -Slocalhost\SQLEXPRESS'
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

error de comillas en BCP

Publicado por Flor (4 intervenciones) el 01/04/2023 00:24:06
solucionado, quite y reordene la consulta, aca la dejo, es para un BCP dinamico, hay que tomar en cuenta que si es una consulta muy grande no deben de haber espacios, por el tema de identacion se dan errores, es mejor colocar toda la consulta en una misma fila, gracias ;)

USE [bd_electrum2CST]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_ReporteBCP]
@NombreArchivo VARCHAR(300)
AS

DECLARE @ConsultaSQL VARCHAR(4000)

BEGIN
SELECT @ConsultaSQL = 'bcp "SELECT * FROM NombreBaseDeDatos.dbo.NombreTabla WHERE ESTADO = ''A''" queryout "C:\Temp\'+@NombreArchivo+'.txt" -c -t, -T -Slocalhost\SQLEXPRESS'
EXEC master.dbo.xp_cmdshell @ConsultaSQL
END

EXEC SP_ReporteBCP
'SP_SP_ReporteBCP_2020_45';
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