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 存储过程
[解决办法]
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 行受影响)
*/