MSSQL标量值函数+ PHP

时间:2011-08-31 20:19:07

标签: php function sql-server-2005

这里的第一篇文章/问题。我正在尝试使用以下查询访问PHP中的标量值函数:

select *, dbo.fnFunctionName_asArray(AnID,';') as refRes FROM ResourceDB where UniqueID = 'IDgoesHere'

此查询在MS SQL Server Management Studio中运行完全正常,但在尝试通过PHP运行查询时,我收到了一个可怕的错误。

这是PHP代码本身:

$sql_r = "select *, dbo.fnFunctionName_asArray(AnID,';') as refRes FROM ResourceDB where UniqueID = 'IDgoesHere'";
$r_r = mssql_query($sql_r, $msdbc);

错误如下:

  

警告:mssql_query()[function.mssql-query]:message:SELECT失败   因为以下SET选项具有不正确的设置:   'CONCAT_NULL_YIELDS_NULL,ANSI_WARNINGS,ANSI_PADDING'。验证   SET选项适用于索引视图和/或索引   计算列和/或筛选索引和/或查询通知   和/或XML数据类型方法和/或空间索引操作。   <严重性16)

我已经远程搜索并找到了有关存储过程的信息,但没有找到MSSQL中的函数。我不知道如何解释错误信息。

提前致谢。

1 个答案:

答案 0 :(得分:1)

错误信息是关键:

  

警告:mssql_query()[function.mssql-query]:message:SELECT失败   因为以下SET选项的设置不正确:   'CONCAT_NULL_YIELDS_NULL,ANSI_WARNINGS,ANSI_PADDING'。验证   SET选项适用于索引视图和/或索引   计算列和/或筛选索引和/或查询通知   和/或XML数据类型方法和/或空间索引操作。   <严重性16)

尝试使用某些功能时,SQL Server对您的连接设置很挑剔。

您使用SSMS和php程序的不同设置连接到SQL Server。他们的默认值必须不同。从SSMS运行此SQL命令,然后从php:

运行
DBCC USEROPTIONS 

它会显示您的实际设置,这些设置是不同的。尝试使用这些设置:

SET ANSI_NULLS ON 
SET CURSOR_CLOSE_ON_COMMIT ON 
SET ANSI_NULL_DFLT_ON ON 
SET ANSI_PADDING ON 
SET QUOTED_IDENTIFIER ON 
SET ANSI_WARNINGS ON 
SET ARITHABORT ON 
SET CONCAT_NULL_YIELDS_NULL ON 
SET NUMERIC_ROUNDABORT OFF