使用存储过程生成数据窗口时提示:异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询

原因:
应用程序使用的是Powerbuilder开发环境,后台是Sqlserver。在数据库中创建一个存储过程用于计算复杂数据并返回结果集。重点是,此存储过程中远程连接了另一个ORACLE服务器。
网上找了好多解决方法,例如:
在查询分析器中,先输入两句
set ansi_nulls on
set ansi_warnings on
执行然后再
Create Proc 存储过程
然后
set ansi_nulls off
set ansi_warnings off
产生出来的存储过程就不会有这个问题
结果还是不行
最后想到
创建另一个过程调用这个存储过程
CREATE proc [dbo].[sp_query_0002]
( @KSSJ DATETIME,
@JSSJ DATETIME )
as
BEGIN
set ansi_nulls on
set ansi_warnings on
EXECUTE DBO.SP_QUERY_0001 @KSSJ = @KSSJ,@JSSJ = @JSSJ
END
GO
解决了,可以生成数据窗口了。但是维护起来比较麻烦
最终解决办法:
右键数据窗口Edit Source
找到
procedure="1 execute dbo.sp_query_0002;1 @KSSJ = :KSSJ, @JSSJ = :JSSJ" arguments=(("KSSJ", datetime),("JSSJ", datetime)) )
改为
procedure="1 set ansi_nulls on set ansi_warnings on execute dbo.sp_query_0001;1 @KSSJ = :KSSJ, @JSSJ = :JSSJ set ansi_nulls off set ansi_warnings off" arguments=(("KSSJ", datetime),("JSSJ", datetime)) )
搞定

在Powerbuilder中,遇到一个错误提示,需要为数据库连接设置ANSI_NULLS和ANSI_WARNINGS选项。错误发生在尝试使用存储过程生成数据窗口时,该存储过程远程连接到Oracle服务器。尝试通过在查询分析器中设置ANSI选项或创建调用存储过程的另一个存储过程的方法未成功。最终解决方案是在数据窗口源代码中直接添加设置ANSI_NULLS和ANSI_WARNINGS的语句,从而解决了问题并成功生成数据窗口。
1241

被折叠的 条评论
为什么被折叠?



