¿se puede crear un fichero desde un stored procedure?

27/06/2007 - 12:45 por Victor | Informe spam
Hola.

Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
contenido es superior a 8000 caracteres.

Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros (así
lo solucionaría).

¿Álguna forma?

Preguntas similare

Leer las respuestas

#6 Victor
29/06/2007 - 13:21 | Informe spam
Gracias, ahora le hecharé una ojeada.

"Jesús López" escribió en el mensaje
news:
Como poderse, se puede escribir en un archivo de texto desde un
procedimiento almacenado de SQL Server 2000. Otra cuestión es si se


debería
o no. Yo diría que en la mayoría de los casos no. Eso lo pueden hacer
aplicaciones externas.

Aquí tienes un ejemplo de un procedimiento almacenado que añade una línea


de
texto a un archivo existente, si el archivo no existe lo crea. Se basa en
los procedimientos almacenados de automatización OLE y utiliza el


componente
Scripting.FileSystemObject

http://msdn2.microsoft.com/en-us/li...90501.aspx


CREATE PROCEDURE AppendTextLineToFile
@FileName varchar(240),
@TextLine varchar(8000)
AS
DECLARE @obj int
DECLARE @fs int
DECLARE @stream int
DECLARE @hresult int
EXEC @hresult = sp_OACreate 'Scripting.FileSystemObject', @fs OUT
SET @obj = @fs
IF @hresult <> 0 GOTO Errors
EXEC @hresult = sp_OAMethod @fs, 'OpenTextFile', @stream OUT, @FileName,


8,
1
IF @hresult <> 0 GOTO Errors
SET @obj = @stream
EXEC @hresult = sp_OAMethod @stream, 'WriteLine', NULL, @TextLine
IF @hresult <> 0 GOTO Errors
EXEC @hresult = sp_OAMethod @stream, 'Close'
IF @hresult <> 0 GOTO Errors

Destroy:
IF @stream IS NOT NULL EXEC sp_OADestroy @stream
IF @fs IS NOT NULL EXEC sp_OADestroy @fs
RETURN
Errors:
IF @obj IS NOT NULL EXEC sp_OAGetErrorInfo @obj
RAISERROR('Error escribiendo en archivo', 16, -1)
GOTO Destroy
GO

EXEC AppendTextLineToFile 'C:\Test.txt', 'Linea escrita desde SQL Server
2000'


Saludos:

Jesús López.
Solid Quality Mentors
www.solidq.com

"Victor" escribió en el mensaje
news:
> Gracias, pero uso el SQL Server 2000.
>
> "Juan Diego Bueno" escribió en el


mensaje
> news:
>> Ahora a bote pronto, mediante SQL tal cual no te se decir, pero si usas
> SQL
>> Server 2005, puedes usar la integración CLR para ello
>>
>> En www.moondance.tk en el apartado Integración CLR en SQL Server,


tienes
> un
>> pequeño ejemplo de ello
>>
>> Saludos
>>
>> "Victor" escribió en el mensaje
>> news:%23a%
>> > Hola.
>> >
>> > Necesito generar ficheros (cada uno con un nombre diferente), y cuyo
>> > contenido es superior a 8000 caracteres.
>> >
>> > Con el xp_cmdshell lo he logrado, pero con datos más pequeños de 255.
>> > No se si el cmd tiene comandos para abrir, insertar y cerrar ficheros
> (así
>> > lo solucionaría).
>> >
>> > ¿Álguna forma?
>> >
>> >
>>
>>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida