用SQL语句写的一段代码把本机的dBaseIV文件导到数据库的问题?????????
用SQL语句写了一个存储过程,但是运行些存储过程的时候有这样的错误提示,如下:
服务器: 消息 7405,级别 16,状态 1,行 1
异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
请高人指点,谢谢!
存储过程如下:
CREATE procedure dbo.up_UploadUpdateData
@tbname nvarchar(50), --SQL Server 表名称
@collist nvarchar(2000), --上传文件的字段列表
@tbpath nvarchar(500) --DBF表所在绝对路径
as
-- set nocount on
SET ANSI_DEFAULTS ON
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
declare @sqltext nvarchar(4000)
declare @dbfname nvarchar(80)
declare @leftstr nvarchar(2)
select @dbfname ='[' + @tbname + '.DBF]'
select @leftstr = upper(left(ltrim(@tbname),2))
print @leftstr
select @tbname = '[' + @tbname +
case
when @leftstr = 'CB' or @leftstr = 'TB' then 'EXSH'
when @leftstr = 'BN' then 'YLD'
end
set @tbname = @tbname + ']'
print @tbname
print @dbfname
select @sqltext = 'insert into '+ @tbname + '(' + @collist + ')'
+ ' select ' + @collist +' from openrowset(' + '''' + 'MICROSOFT.JET.OLEDB.4.0' + '''' + ','
+ '''' + 'dBase IV;HDR=NO;IMEX=2;DATABASE='+ @tbpath + '''' + ' ,'
+ '''' + 'select ' + @collist +' from ' + @dbfname + '''' + ')'
print @sqltext
exec(@sqltext)
SET ANSI_NULLS OFF
SET ANSI_WARNINGS OFF
SET ANSI_DEFAULTS OFF
GO
-----------------------------------------
但是把本语句直接在SQL 查询分析器里面查询就能够成功执行查询
问题点数:5、回复次数:2Top
1 楼pengdali()回复于 2005-05-31 20:37:56 得分 5
CREATE procedure dbo.up_UploadUpdateData
@tbname nvarchar(50), --SQL Server 表名称
@collist nvarchar(2000), --上传文件的字段列表
@tbpath nvarchar(500) --DBF表所在绝对路径
as
-- set nocount on
declare @sqltext nvarchar(4000)
declare @dbfname nvarchar(80)
declare @leftstr nvarchar(2)
select @dbfname ='[' + @tbname + '.DBF]'
select @leftstr = upper(left(ltrim(@tbname),2))
print @leftstr
select @tbname = '[' + @tbname +
case
when @leftstr = 'CB' or @leftstr = 'TB' then 'EXSH'
when @leftstr = 'BN' then 'YLD'
end
set @tbname = @tbname + ']'
print @tbname
print @dbfname
select @sqltext = 'insert into '+ @tbname + '(' + @collist + ')'
+ ' select ' + @collist +' from openrowset(' + '''' + 'MICROSOFT.JET.OLEDB.4.0' + '''' + ','
+ '''' + 'dBase IV;HDR=NO;IMEX=2;DATABASE='+ @tbpath + '''' + ' ,'
+ '''' + 'select ' + @collist +' from ' + @dbfname + '''' + ')'
print @sqltext
exec('SET ANSI_DEFAULTS ON
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
'+@sqltext)
GOTop
2 楼liuzijing688(子敬)回复于 2005-06-01 16:48:44 得分 0
问题解决了,把原来的存储过程删除,在SQL 查询分析器中执行一次重新创建就OK了Top




