Proc. Almacenado que use Bulk Insert con parámetros

yhonny
15 de Agosto del 2005
Un cordial saludo a todos, tengo el siguiente procedimiento almacenado en SQL Server 2000
para subir un archivo de texto plano pasando como parámetros la tabla destino
el archivo a subir, el delimitador de campo y el delimitador de fila.
una vez creado lo mando a ejecutar así:
exec SubirArchivo 'creditos','D:creditos.txt','¦','n'
se genera un error parecido a esto: Can't find store procedure 'BULK INSERT creditos FROM 'D:creditos.txt...'
no entiendo que es lo que pasa, les agradezco inmensamente, la ayuda que me puedan brindar



IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'SubirArchivo' AND type = 'P')
DROP PROCEDURE SubirArchivo
GO
GO
CREATE PROCEDURE SubirArchivo
(
@tabla varchar(100),
@archivo varchar(100),
@delimitadordecampo varchar(5),
@delimitadordefila varchar(5)
)
AS

BEGIN

DECLARE @sql varchar(500)
SET @archivo=char(39) + @archivo + char(39)
SET @delimitadordecampo=char(39) + @delimitadordecampo + char(39)
SET @delimitadordefila=char(39) + @delimitadordefila + char(39)

SET @sql = 'BULK INSERT ' @tabla + ' FROM ' + @archivo + ' WITH (FIELDTERMINATOR = ' + @delimitadordecampo + ',ROWTERMINATOR = ' + @delimitadordefila)'

EXECUTE @sql
END

Karina
15 de Agosto del 2005
Hola Yhonny, prueba con estos cambios

IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'SubirArchivo' AND type = 'P')
DROP PROCEDURE SubirArchivo
GO

CREATE PROCEDURE SubirArchivo

@tabla varchar(100),
@archivo varchar(100),
@delimitadordecampo varchar(5),
@delimitadordefila varchar(5)
AS

BEGIN
EXECUTE ( 'BULK INSERT ' + @tabla + ' FROM ''' + @archivo + ''' WITH (FIELDTERMINATOR = ''' + @delimitadordecampo + ''',ROWTERMINATOR = ''' + @delimitadordefila +''')' )

END

odhr
15 de Agosto del 2005
Buenas, gracias de antemano. Me gustaria saber si alguien tiene por casualidad un procedimiento almacenadno que lea .txt y escriba el mismo muchas gracias

Mr Cerebro
15 de Agosto del 2005
Beuno si te fijas bein en tu Procedure en la cadena q armas en @sql es algo asi
SET @sql='BUL...' @ TABLA , aqui falta un signo (+) antes de @Tabla.
Bueno un detalle adicional, si a pesar de ese ca,vio te trae problemas vas a tener q poner las variables entre comillas triple, para q pasen como valores literales en tu cadena y no sean reconocidos como onjetos de SQL server (eso por las tantas cosas q microsoft hace, nose pq, pero ni modo).