利用SQL Server存儲(chǔ)過(guò)程讀數(shù)據(jù)寫(xiě)文件
下面為您介紹的這個(gè)SQL Server存儲(chǔ)過(guò)程,實(shí)現(xiàn)功能是將表內(nèi)每?jī)扇酥g相互通信內(nèi)容區(qū)分開(kāi)來(lái),并分別寫(xiě)入文件,希望對(duì)您學(xué)習(xí)SQL Server存儲(chǔ)過(guò)程方面能有所幫助。
--主過(guò)程(查找數(shù)據(jù),并分類(lèi)寫(xiě)入文件)
- CREATE PROC creatFileByNameProc
- @filepath varchar(128)
- as
- begin
- declare
- @fulFileName nvarchar(256),
- @content nvarchar(2000),
- @root nvarchar(64),
- @str2 nvarchar(64),
- @str3 nvarchar(64),
- @target nvarchar(64),
- @str5 nvarchar(64),
- @str6 nvarchar(64),
- @str7 nvarchar(64),
- @str8 nvarchar(64)
--文件是否存在的判斷參數(shù)
- declare @isExist int, @filename1 nvarchar(256),@filename2 nvarchar(256)
--文件操作參數(shù)
- declare @obj int
- exec sp_oacreate 'Scripting.FileSystemObject',@obj out
- Declare MyCursor Cursor Scroll
- For Select [1],[2],[3],[4],[5],[6],[7],[8] From dbo.[1111] order by [7]
- Open MyCursor
- FETCH first from MyCursor into @root,@str2,@str3,@target,@str5,@str6,@str7,@str8
- while @@fetch_status=0
- Begin
- set @content= @root+' '+@str2+' '+@str3+' '+@target+' '+@str5+' '+@str6+' '+@str7+' '+@str8
- --print @content
- set @filename1= @target+'_'+ @root+'.txt'
- set @filename2= @root+'_'+@target+'.txt'
- set @isExist= dbo.[FileExist]( @filepath +'\' , @filename1)
- --- print @isExist
- if(@isExist=1)
- begin
- set @fulFileName=@filepath+'\'+@filename1
- --print @fulFileName+'---1111111'
- exec p_movefile @fulFileName,@content,@obj
- end
- else
- begin
- set @fulFileName=@filepath+'\'+@filename2
- --print @fulFileName+'---22222'
- exec p_movefile @fulFileName,@content,@obj
- end
- FETCH next from MyCursor into @root,@str2,@str3,@target,@str5,@str6,@str7,@str8
- END
- CLOSE MyCursor
- DEALLOCATE MyCursor
- end
--判斷文件是否存在的函數(shù)
- create function dbo.FileExist(
- @filePath nvarchar(600),
- @fileName nvarchar(400)
- ) returns int
- as
- begin
- declare @result int
- declare @sql nvarchar(1000)
- set @sql=@filePath+@fileName
- exec master.dbo.xp_fileexist @sql,@result output
- return @result
- end
--文件不存在,創(chuàng)建文件,寫(xiě)入內(nèi)容;文件存在,追加內(nèi)容
- create proc p_movefile
- @filename varchar(1000),--要操作的文本文件名
- @text varchar(8000), --要寫(xiě)入的內(nèi)容
- @obj int
- as
- begin
- declare @err int,@src varchar(255),@desc varchar(255)
- exec @err=sp_oamethod @obj,'OpenTextFile',@obj out,@filename,8,1
- if @err<>0 goto lberr
- exec @err=sp_oamethod @obj,'WriteLine',null,@text
- if @err<>0 goto lberr
- exec @err=sp_oadestroy @obj
- return
- lberr:
- exec sp_oageterrorinfo 0,@src out,@desc out
- select cast(@err as varbinary(4)) as 錯(cuò)誤號(hào)
- ,@src as 錯(cuò)誤源,@desc as 錯(cuò)誤描述
- end
--執(zhí)行語(yǔ)句。(由于沒(méi)有進(jìn)行文件夾是否存在的處理,執(zhí)行前需要指定好已存在路徑)
- exec creatFileByNameProc 'E:\aa'
【編輯推薦】
SQL Server創(chuàng)建分區(qū)函數(shù)的方法