利用SQL Server存儲過程讀數(shù)據(jù)寫文件
作者:佚名
SQL Server數(shù)據(jù)庫中的存儲過程用的比較多,下文介紹了一個利用SQL Server存儲過程讀數(shù)據(jù)寫文件的實現(xiàn)方法,供您參考。
下面為您介紹的這個SQL Server存儲過程,實現(xiàn)功能是將表內(nèi)每兩人之間相互通信內(nèi)容區(qū)分開來,并分別寫入文件,希望對您學習SQL Server存儲過程方面能有所幫助。
--主過程(查找數(shù)據(jù),并分類寫入文件)
- 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)建文件,寫入內(nèi)容;文件存在,追加內(nèi)容
- create proc p_movefile
- @filename varchar(1000),--要操作的文本文件名
- @text varchar(8000), --要寫入的內(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 錯誤號
- ,@src as 錯誤源,@desc as 錯誤描述
- end
--執(zhí)行語句。(由于沒有進行文件夾是否存在的處理,執(zhí)行前需要指定好已存在路徑)
- exec creatFileByNameProc 'E:\aa'
【編輯推薦】
責任編輯:段燃
來源:
互聯(lián)網(wǎng)