XML与sql2005的存储过程
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter PROCEDURE dbo.up_xml1
@cxml xml
AS
BEGIN
SET NOCOUNT ON;
declare @idoc int;
declare @doc xml;
select @doc = bulkcolumn
from openrowset(
bulk '''+@doc+''',
single_blob
) as x
exec sp_xml_preparedocument @Idoc output,@doc
select * into #temp from openxml(@idoc, '/main/base ', 2)with (
[bookname]varchar(100),
[cbookname]varchar(100),
[ISBN]varchar(100),
[开本]varchar(100),
[链接]varchar(100)
)
END
select * from #temp
drop table #temp
GO
创建的时候提示 无法进行大容量加载。文件 "+@doc+" 不存在。
bulk 后面不能跟变量吗,还是我哪里写的不对,请指教!!
------解决方案--------------------不能跟变量,
可以使用sp_executesql动态执行。
------解决方案--------------------OPENROWSET 不接受参数变量。
参考:
http://technet.microsoft.com/zh-cn/library/ms190312.aspx
你在上面的地址直接:ctrl+F 可以找到“OPENROWSET 不接受参数变量”。
OPENDATASOURCE也不接受参数变量。
可以用exec 或是sp_executesql。
参考:
http://topic.csdn.net/t/20050530/08/4044702.html