НазначениеMS SQL Server (RK ReportServer)
Тип запросаАсинхронный

Настройка агента для выполнения запроса

2.1 Формат запроса

<RQ cmd="rssql" tasktype="any_call" callback="http://ya.ru">
<PARAM name="object_id" val="000000000"/>
<Query>
<Command TYPE="SP" Text="Func1" ExpectedResultSet="1>
<Param Id="Param1" Type="Int" Value="1" />
<Param Id="Param2" Type="DateTime" Value="2015-01-01" />
</Command>
</Query>
</RQ>

Описание параметров


ПараметрТипОбязательныйОписаниеЗначение по умолчанию
object_idint+Код ресторана в системе лицензирования
groupguidguid-Необязательный guid для группировки запросов в рамках одного пользовательского сценария. Если создаётся серия запросов (создан заказ, сохранён, оплачен), то лучше группировать их в один сценарий для упрощения диагностики проблем.
callbackstring+HTTP адрес, по которому WhiteServer отправит запрос после выполнения команды
Command TYPEsp - stored procedure, f - function+Тип команды
Command textstring+Название хранимой процедуры или функции
Command ExpectedResultSetint+Флаг, означающий, что от процедуры или функции ожидается возвращаемый набор данных.


TYPE=«SP» ExpectedResultSet=«1» - хранимая процедура, возвращающая набор данных
TYPE=«SP» ExpectedResultSet=«0» - хранимая процедура, ничего не возвращает. Получить возможно только returnResult
TYPE=«F» ExpectedResultSet=«1» - функция, возвращаемая набор данных
TYPE=«F» ExpectedResultSet=«0» - скалярная функция. Возвращает скалярное значение

2.2 Формат ответа

<?xml version="1.0" encoding="utf-8"?>
<RP taskguid="6774b0bc-dd5e-4eca-a1f9-d982607feb2e" code="0" version="1.5.0.7155" />

Описание параметров

ПараметрТипОписание
taskguidguidУникальный код этой задачи. При отправке callback будет использован этот код, чтобы вызывающий сервис мог сопоставить запрос и ответ


2.3 Формат callback (асинхронного ответа)

<RP cmdguid="d87eb27c-6220-4ff4-9d1b-0951b50447a7" posid="4D7B18F2-58CE-4F0F-A2B6-2D90A6BFCF67">
<QueryResult status="0" message="">
<returnResult>0</returnResult>
<resultSet>сериализованный результат команды</resultSet>
</QueryResult>
</RP> 

Описание параметров

ПараметрТипОписание
cmdguidguidСовпадает с taskguid в ответе
posidguidPOS id кассового сервера (можно игнорировать)
status0 - ОК, 1 - Ошибка при выполнении запросаСтатус выполнения
messagestringТекстовое сообщение статуса
returnResultintРезультат выполнения
resultSetstringСериализованный результат выполнения команды

Обратите внимание, что в 3.1.Х.3 taskguid и 3.1.Х.4 cmdguid совпадают.

3.1 Функция, возвращающая одно значение

3.1.1 Листинг процедуры

Create function [dbo].[FUNC_SUM](@param1 INT, @param2 int)
  RETURNS Int AS
begin
return (@param1 + @param2)
end

3.1.2 Запрос

<?xml version="1.0" encoding="utf-8"?>
<RQ cmd="rssql" tasktype="any_call" callback="http://ya.ru">
<PARAM name="object_id" val="199990106"/>
<Query>
<Command TYPE="F" Text="FUNC_SUM" ExpectedResultSet="0">
<Param Id="Param1" Type="Int" Value="1" />
<Param Id="Param2" Type="Int" Value="5" />
</Command>
</Query>
</RQ>

3.1.3 Ответ

<?xml version="1.0" encoding="utf-8"?>
<RP taskguid="0a85447e-f4da-4424-8c36-d20c63fe6b89" code="0" version="1.7.0.8215" />

3.1.4 Callback (асинхронный ответ)

<RP cmdguid="0a85447e-f4da-4424-8c36-d20c63fe6b89" posid="797C3E3B-3C33-4D97-87F8-25578FE48BE6">
<QueryResult status="0" message="">
	<returnResult>0</returnResult>
	<resultSet>
		<row COLUMN1="6"/>
	</resultSet>
</QueryResult>
</RP> 

3.2 Процедура, возвращающая одно значение

3.2.1 Листинг процедуры

ALTER PROCEDURE [dbo].[Proc_First](
  @param1 INT, 
  @outInt int OUTPUT
)
AS 
BEGIN
  set nocount on;
	
  set @outInt = @outInt + 10;
  return @outint - @param1;
end 

3.2.2 Запрос

<?xml version="1.0" encoding="utf-8"?>
<RQ cmd="rssql" tasktype="any_call" callback="http://ya.ru">
<PARAM name="object_id" val="199990106"/>
<Query>
    <Command TYPE="SP" Text="Proc_First"  ExpectedResultSet="0">
      <Param Id="Param1" Type="int" Value="1" />
      <Param Id="OutInt" Type="int" Value="7" />
    </Command>
</Query>
</RQ>

3.2.3 Ответ

<?xml version="1.0" encoding="utf-8"?>
<RP taskguid="0a85447e-f4da-4424-8c36-d20c63fe6b89" code="0" version="1.7.0.8215" />

3.2.4 Callback (асинхронный ответ)

<RP cmdguid="0a85447e-f4da-4424-8c36-d20c63fe6b89" posid="797C3E3B-3C33-4D97-87F8-25578FE48BE6">
<QueryResult status="0" message="">
	<returnResult>0</returnResult>
	<resultSet>
		<row COLUMN1="6"/>
	</resultSet>
</QueryResult>
</RP> 

3.3 Функция, возвращающая несколько значений

3.3.1 Листинг процедуры

Create function [dbo].[FUNC_SUM2](@param1 INT, @param2 int)
  RETURNS table AS

return (
  select @param1 as param1, @param2 as param2, @param1 + @param2 as summ
)

3.3.2 Запрос

<?xml version="1.0" encoding="utf-8"?>
<RQ cmd="rssql" tasktype="any_call" callback="http://ya.ru">
<PARAM name="object_id" val="199990106"/>
<Query>
<Command TYPE="F" Text="FUNC_SUM2" ExpectedResultSet="1">
     <Param Id="Param1" Type="Int" Value="1" />
     <Param Id="Param2" Type="Int" Value="5" />
</Command>
 
</Command>
</Query>
</RQ>

3.3.3 Ответ

<?xml version="1.0" encoding="utf-8"?>
<RP taskguid="0a85447e-f4da-4424-8c36-d20c63fe6b89" code="0" version="1.7.0.8215" />

3.3.4 Callback (асинхронный ответ)

<RP cmdguid="0a85447e-f4da-4424-8c36-d20c63fe6b89" posid="797C3E3B-3C33-4D97-87F8-25578FE48BE6">
<QueryResult status="0" message="">
	<returnResult>0</returnResult>
	<resultSet>
		<row param1="1" param2="5" summ="6"/>
	</resultSet>
</QueryResult>
</RP>