Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE PROCEDURE [dbo].[api_daDataAddress_response]
- @response nvarchar(max),
- @parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)
- @username nvarchar(32)
- AS
- BEGIN
- -- ОТЛАДКА
- insert into as_trace ( header, text, username, code , created ) values( 'LEN @response ', LEN ( @response ) , @username, 'api_daDataAddress_response' , GETDATE() )
- insert into as_trace ( header, text, username, code , created ) values( '@response - 1 , 1024 ', SUBSTRING ( @response , 1 , 1024 ) , @username, 'api_daDataAddress_response' , GETDATE() )
- DECLARE @json1 NVARCHAR(MAX) = N''
- SET @json1 = @response
- -- Для проверки правильности JSON формата существует функция ISJSON, которая возвращает 1, если это JSON, 0 — если нет и NULL, если был передан NULL
- DECLARE @presentJSON bit = 0
- SELECT @presentJSON = ISNULL( ISJSON( @json1 ) , 0 )
- IF @presentJSON <> 1
- BEGIN
- SELECT 'Ошибка! Строка @response не является JSON!' Msg, 0 Result, @response Response
- RETURN
- END
- DECLARE @T table( value_Address VARCHAR(200), postal_code VARCHAR(200),
- data_region_with_type VARCHAR(200),
- data_region_kladr_id VARCHAR(200), data_city_kladr_id VARCHAR(200), data_street_kladr_id VARCHAR(200), data_house_kladr_id VARCHAR(200))
- INSERT INTO @T
- SELECT Query.value_Address , ISNULL(Query.data_postal_code ,'' ) as postal_code
- , Query.data_region_with_type
- , Query.data_region_kladr_id , Query.data_city_kladr_id , Query.data_street_kladr_id , Query.data_house_kladr_id
- FROM OPENJSON(@json1, N'$.suggestions') -- Зашли в массив , далее в WITH считаем , что адреса уже внути массива
- WITH (
- value_Address VARCHAR(200) N'$.value' -- Адрес одной строкой (как показывается в списке подсказок)
- , data_postal_code VARCHAR(200) N'$.data.postal_code' -- Индекс
- , data_region_with_type VARCHAR(200) N'$.data.region_with_type' -- Регион с типом
- , data_region_kladr_id VARCHAR(200) N'$.data.region_kladr_id' -- "region_kladr_id": "7700000000000", -- Код КЛАДР региона
- , data_city_kladr_id VARCHAR(200) N'$.data.city_kladr_id' -- "city_kladr_id": "7701100200000", -- Код КЛАДР города
- , data_street_kladr_id VARCHAR(200) N'$.data.street_kladr_id' -- data.street_kladr_id Код КЛАДР улицы
- , data_house_kladr_id VARCHAR(200) N'$.data.house_kladr_id' -- data.house_kladr_id Код КЛАДР дома
- ) AS Query
- DECLARE @countAllRecords int = 0 , @countPostalCode int = 0
- SELECT @countAllRecords = ISNULL( COUNT(*) , 0 ) , @countPostalCode = ISNULL( COUNT(DISTINCT postal_code) , 0 ) FROM @T
- -------------------------------------------------------------------------------------------------------------------------
- -- Формирование таблицы с результатами -- вывод таблицы (по результатам запроса парсинга) -- таблица - форматирование html
- DECLARE @tableData nVARCHAR(max) = ''
- IF @countAllRecords > 0
- BEGIN -- есть записи в табл.
- -- заголовок табл.
- SELECT @tableData = '<table class="table table-bordered"><thead><tr><th scope="col">Адрес</th><th scope="col">Индекс</th></tr></thead><tbody>'
- -- подготовка данных - с разметкой - все в одну строку <tr> <td>...</td> </tr>
- SELECT @tableData = ISNULL( @tableData ,'' )
- + '<tr>' + '<td>'+value_Address +'</td>' + '<td>'+ISNULL(postal_code ,'no' ) +'</td>' + '</tr>'
- FROM @T -- dbo.api_daData_searchLogData
- -- закрыть табл.
- SELECT @tableData = @tableData + '</tbody> </table>'
- insert into as_trace ( header, text, username, code , created ) values( ' @tableData', @tableData , @username, 'api_daDataAddress_response' , GETDATE() )
- END
- -- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --
- -------------------------------------------------------------------------------------------------------------------------
- DECLARE @region_with_type VARCHAR(200) = '' -- Регион с типом -- по факту город
- -- Список /городов
- SELECT @region_with_type = ISNULL( @region_with_type ,'') + QUOTENAME( t1.data_region_with_type)
- FROM (
- SELECT DISTINCT data_region_with_type FROM @T -- dbo.api_daData_searchLogData --order by 1
- ) t1
- -- SELECT 1
- -- CHAR(10) Заменено на '<BR>'
- select 'Результаты запроса: Регион: '+ @region_with_type+'.'+'<BR>'+' Найдено уникальных почт.индексов - ' + TRY_CAST( @countPostalCode AS nvarchar) + +'.'+'<BR>'+' Адресов - ' + TRY_CAST( @countAllRecords AS nvarchar)+'.' Msg
- , 1 Result
- -- , @response Response --ТАК при вызов из формы вернет оригинальный @response !!!
- ,'Результаты запроса: Регион: '+ @region_with_type+'.'+'<BR>'+' Найдено уникальных почт.индексов - ' + TRY_CAST( @countPostalCode AS nvarchar) + +'.'+'<BR>'+' Адресов - '
- + TRY_CAST( @countAllRecords AS nvarchar)+'.' +'<BR>'
- -- ниже идет табл. с данными
- + IIF ( @tableData = '', '' , @tableData )
- AS Response
- -- SELECT 2 Внешние действия
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement