MSSQL скалярные функции + PHP - PullRequest
3 голосов
/ 01 сентября 2011

первый пост / вопрос здесь. Я пытаюсь получить доступ к скалярной функции в 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]: сообщение: ошибка SELECT потому что следующие опции SET имеют неправильные настройки: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Подтвердите это Параметры SET являются правильными для использования с индексированными представлениями и / или индексами на вычисляемые столбцы и / или отфильтрованные индексы и / или уведомления о запросах и / или методы типа данных XML и / или операции пространственного индекса. (степень тяжести 16) в

Я искал повсюду и нашел информацию о хранимых процедурах, но не о функциях в MSSQL. Я не уверен, как интерпретировать сообщение об ошибке.

Заранее спасибо.

1 Ответ

1 голос
/ 01 сентября 2011

сообщение об ошибке является ключом:

Предупреждение: mssql_query () [function.mssql-query]: сообщение: ошибка SELECT потому что следующие опции SET имеют неправильные настройки: 'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Убедитесь, что Параметры SET являются правильными для использования с индексированными представлениями и / или индексами на вычисляемые столбцы и / или отфильтрованные индексы и / или уведомления о запросах и / или методы типа данных XML и / или операции пространственного индекса. (степень тяжести 16) в

при попытке использовать определенные функции, SQL Server требователен к настройкам вашего соединения.

вы подключаетесь к SQL Server с различными настройками для SSMS и вашей php-программы. Их значения по умолчанию должны быть разными. Запустите эту команду SQL из SSMS, а затем из 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
...