异构查询需要为连接设置ANSI_NULLS和ANSI_WARNINGS选项。这确保了一致的查询语义

时间:2012-04-24 14:45:01

标签: sql-server heterogeneous ansi-nulls

我检查了整个网络,找不到似乎对我有用的解决方案..

我已经重新创建了我的存储过程,确保将这些行作为第一行:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_WARNINGS ON
GO
CREATE PROCEDURE test_insert
AS
....
BEGIN
...
END

当我从php调用我的存储过程时,我只收到此错误。它在sql server中工作正常.. 我真的不知道我还能做什么..请帮助我; _;

3 个答案:

答案 0 :(得分:5)

在您的陈述之前而不是在主要查询的开头

添加此内容
$result = mssql_query("SET ANSI_NULLS ON;");
$result = mssql_query("SET ANSI_WARNINGS ON;"); 

答案 1 :(得分:1)

这是一个有效的例子...... 试试这个

create procedure dbo.access_update @O_SQL_Error_State int = NULL     output

as

set ANSI_NULLS ON 

SET ANSI_WARNINGS ON    

....
....

GO

答案 2 :(得分:0)

通常在另一个论坛上找不到更好的答案-但是根据this post,SET命令必须在CREATE PROCEDURE之前。经过测试并可以与SQL 2017一起使用

例如:

SET ANSI_WARNINGS ON
SET ANSI_NULLS ON 

CREATE PROCEDURE  dbo.access_update @O_SQL_Error_State int = NULL  output
as 
...