Error en sp_executesql

17/12/2004 - 16:38 por Anonimo | Informe spam
Estoy tratando de hacer un sp, que copie los datos de las tablas de un
servidor a otro, pasandole como parametro el nombre de la tabla
(@pTableName )

El caso es que me arroja un error en la linea 1

Server: Msg 156, Level 15, State 1, Line 1
Sintaxis incorrecta cerca de la palabra clave 'SELECT'.
Server: Msg 170, Level 15, State 1, Line 1
Línea 1: sintaxis incorrecta cerca de ')'.

Pero si comento la instrucción "EXEC sp_executesql @vIns", el sp se ejecuta
sin problemas (aunque no hace lo que quiero, logicamente)


SET NOCOUNT ON
DECLARE @pTableName nvarchar(128)
SET @pTableName= 'ConfigTablas'

DECLARE @vSQL nvarchar(4000)
DECLARE @vIns NVARCHAR(4000)

IF EXISTS (SELECT name FROM sysobjects WHERE name = @pTableName AND xtype 'U')
BEGIN
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION

SET @vSQL = 'TRUNCATE TABLE ' + @pTableName
SELECT @vSQL
EXECUTE (@vSQL)

SET @vIns = N'INSERT INTO ' + @pTableName + N' (SELECT * FROM
SIPSrv.SIPDataBase.dbo.' + @pTableName + N')'
SELECT @vIns
EXEC sp_executesql @vIns
COMMIT
END

Alguien puede hecharme una mano?

Gracias de antemano.
José G. Álvarez
Valencia - Venezuela
 

Leer las respuestas

#1 ulises
17/12/2004 - 16:57 | Informe spam
El paréntesis sobra, la sintaxis es :

INSERT INTO ... SELECT * FROM ..

Saludos,
Ulises


Estoy tratando de hacer un sp, que copie los datos de las


tablas de un
servidor a otro, pasandole como parametro el nombre de la


tabla
(@pTableName )

El caso es que me arroja un error en la linea 1

Server: Msg 156, Level 15, State 1, Line 1
Sintaxis incorrecta cerca de la palabra clave 'SELECT'.
Server: Msg 170, Level 15, State 1, Line 1
Línea 1: sintaxis incorrecta cerca de ')'.

Pero si comento la instrucción "EXEC sp_executesql @vIns",


el sp se ejecuta
sin problemas (aunque no hace lo que quiero, logicamente)


SET NOCOUNT ON
DECLARE @pTableName nvarchar(128)
SET @pTableName= 'ConfigTablas'

DECLARE @vSQL nvarchar(4000)
DECLARE @vIns NVARCHAR(4000)

IF EXISTS (SELECT name FROM sysobjects WHERE name @pTableName AND xtype >'U')
BEGIN
SET XACT_ABORT ON
BEGIN DISTRIBUTED TRANSACTION

SET @vSQL = 'TRUNCATE TABLE ' + @pTableName
SELECT @vSQL
EXECUTE (@vSQL)

SET @vIns = N'INSERT INTO ' + @pTableName + N' (SELECT


* FROM
SIPSrv.SIPDataBase.dbo.' + @pTableName + N')'
SELECT @vIns
EXEC sp_executesql @vIns
COMMIT
END

Alguien puede hecharme una mano?

Gracias de antemano.
José G. Álvarez
Valencia - Venezuela


.

Preguntas similares