读书人

t-sql存储过程MSSOL2008R2 储存多个

发布时间: 2013-09-06 10:17:17 作者: rapoo

t-sql存储过程,MSSOL2008R2 存储多个xml文件
现在MSSQL2008R2中新建一个表名为xtable,有两列,第一列是name,代表文件名;第二列是value,代表存储的文件内容,数据格式分别为varchar和xml。
所有的xml文件存储在一个文件夹里,路径假设为‘F:\data\’,每个文件的文件名为它的编号,例如第一个文件为00000,第二个为00001。
这里要注意的是,这些文件都为某工具生成的,所以没有后缀名!!!所以说文件名不是00000.xml而是00000!!!
我写了一个存储过程如下:

CREATE PROCEDURE Demo1
@x int = 0
AS
BEGIN
while @x < 2
begin
declare @pathnvarchar(200)
set @path = N'insert into xtable(value)
select * from openrowset
(bulk''F:\data\'
+ right(cast(@x as nvarchar),5) + N'’,SINGLE_CLOB) as x';
EXECsp_executesql @path
set @x = @x + 1
end
END
明显是 set @path句有错,请问应该怎么写???
t-sqlopenrowset?bulk t-sql bulk 存储过程
[解决办法]

引用:
请问我现在需要插入文件名到表中,应该怎么插呢,引号那块总是不对。。打印出来的@path括号还少一个

ALTER PROCEDURE Demo1
@x int = 0
AS
BEGIN
while @x < 2
begin
declare @path nvarchar(4000)--长度不够
declare @strname nvarchar(200)
set @strname = right(cast(@x as nvarchar),5)
set @path = N'
insert into xtable(name,value)
select '''+ @strname +''',BulkColumn from/*--拼的话,记得加''号,且转义*/
(


select BulkColumn from openrowset
(bulk ''d:\data\'
+ right(cast(@x as nvarchar),5) + N''',SINGLE_CLOB) as xmldata) t'

PRINT @path
EXEC sp_executesql @path
set @x = @x + 1
end
END
go

EXEC Demo1 1
/*
(1 行受影响)
*/

读书人网 >SQL Server

热点推荐