Проблема с вызовом хранимой процедуры из PDO

Дмитрий В.

Новичок
Странное поведение при запуске на выполнение хранимой процедуры:

PHP:
$bdSQL = new PDO("sqlsrv:Server=" . SERVER . ";Database=" . DBNAME, USER, PSWD);
$bdSQL->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdSQL->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);

$query = $bdSQL->prepare("EXEC updateTable ?, ?");
$query->execute(array(1, '<xml><element name="демо" password="демо" physical_persons="1" access="1"/></xml>'));
$query->setFetchMode(PDO::FETCH_ASSOC);

while ($data = $query->fetch()) {
}
PDO выдает следующую ошибку, Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[IMSSP]: The active result for the query contains no fields.'
При этом процедура завершает работу корректно, данные в таблице обновляются.

Если я запускаю процедуры из консоли бд, то все работает нормально;

Текст хранимой процедуры:

PHP:
CREATE PROCEDURE [dbo].[updateTable] @id INT, @xml XML AS

DECLARE @name nvarchar(255)
DECLARE @password nvarchar(255)
DECLARE @physical_persons INT
DECLARE @access INT

-- ПОЛУЧАЕМ ДАННЫЕ
SELECT
  @name = element.value('@name', 'nvarchar(255)'),
  @password = element.value('@password', 'nvarchar(255)'),
  @physical_persons = element.value('@physical_persons', 'int'),
  @access = element.value('@access', 'int')
FROM @xml.nodes('/xml/element') col(element)

-- ВЫПОЛНЯЕМ СОХРАНЕНИЕ ДАННЫХ
IF @id = 0 BEGIN 
  INSERT INTO [user] ([name], [password], [physical_persons], [access]) VALUES (@name, @password, @physical_persons, @access)
END ELSE BEGIN
  IF @password = '' UPDATE [user] SET [name] = @name, [physical_persons] = @physical_persons, [access] = @access WHERE [id] = @id
  ELSE UPDATE [user] SET [name] = @name, [password] = @password, [physical_persons] = @physical_persons, [access] = @access WHERE [id] = @id
END

SELECT @id AS [result];
При чем если строку "SELECT @id AS [result];" поместить перед "-- ВЫПОЛНЯЕМ СОХРАНЕНИЕ ДАННЫХ" то ошибки не будет.

В чем может быть проблема? Помогите разобраться.
 
Сверху