Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Nvarchar(max) / 25 сообщений из 43, страница 1 из 2
02.07.2018, 14:12
    #39668334
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
Здравствуйте!

Есть работающий SQL-запрос. Нужно сделать динамическим, чтобы менять периоды MDX-запроса внутри SQL-запроса.
SQL-запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
USE [SM]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[StandardMatrixNoveltiesONESFO3] (@DT date) AS

DECLARE @MDXQUERY nvarchar(4000);
DECLARE @SQLQUERY nvarchar(max);

SET @MDXQUERY =
		N'''SELECT
			{[Measures].[Отгрузки шт]} ON 0,
			... FROM PROFIT)''';

SET @SQLQUERY = N'...	
	FROM OPENROWSET(
		''MSOLAP'',
		''Provider=MSOLAP.3;...'',
		' + @MDXQUERY + '
				...'

EXEC (@SQLQUERY);

Все равно срезается до 4000 символов. Как можно передать в EXEC переменную, содержащий текст длиной свыше 4000 символов, и не использовать такой вариант EXEC (@SQLQUERY1 + @SQLQUERY2 + @SQLQUERY3) , который cоединяет разделенные тексты запроса?
...
Рейтинг: 0 / 0
02.07.2018, 14:28
    #39668341
Kopelly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk, если так?
Код: sql
1.
2.
3.
4.
5.
6.
SET @SQLQUERY = N'...	
	FROM OPENROWSET(
		''MSOLAP'',
		''Provider=MSOLAP.3;...'',
		' + cast(@MDXQUERY as Varchar(MAX)) + '
				...'
...
Рейтинг: 0 / 0
02.07.2018, 14:29
    #39668343
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
Пишу так
Код: sql
1.
SET @SQLQUERY = CAST(N'' AS VARCHAR(MAX)) + N' ...'


не помогает
...
Рейтинг: 0 / 0
02.07.2018, 14:32
    #39668349
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
Kopellyferzmikk, если так?
Код: sql
1.
2.
3.
4.
5.
6.
SET @SQLQUERY = N'...	
	FROM OPENROWSET(
		''MSOLAP'',
		''Provider=MSOLAP.3;...'',
		' + cast(@MDXQUERY as Varchar(MAX)) + '
				...'

Не помогает. Тут не MDX-запрос длинный, а SQL.
...
Рейтинг: 0 / 0
02.07.2018, 14:34
    #39668350
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

ошибка выполнения какая?
...
Рейтинг: 0 / 0
02.07.2018, 14:41
    #39668355
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaKошибка выполнения какая?Срезает. В коде конце такие команды
Код: sql
1.
2.
3.
4.
5.
6.
...
PRINT @MDXQUERY
PRINT @SQLQUERY					
PRINT @DT
EXEC (@SQLQUERY);
PRINT 'Завершено'
...
Рейтинг: 0 / 0
02.07.2018, 14:44
    #39668359
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

для начала
Код: sql
1.
PRINT CAST(@SQLQUERY as TEXT) 
...
Рейтинг: 0 / 0
02.07.2018, 14:49
    #39668364
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaKferzmikk,

для начала
Код: sql
1.
PRINT CAST(@SQLQUERY as TEXT) 

Меньше срезал
...
Рейтинг: 0 / 0
02.07.2018, 14:54
    #39668369
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

ну так и смотрите что у вас в 42 строке. Пялится в print не обязательно
...
Рейтинг: 0 / 0
02.07.2018, 14:55
    #39668371
boltnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
Так это может print обрезает, смотри через select.
...
Рейтинг: 0 / 0
02.07.2018, 14:55
    #39668373
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
boltnikТак это может print обрезает, смотри через select. шутки за 300?
...
Рейтинг: 0 / 0
02.07.2018, 14:57
    #39668379
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

так даст целиком, если уж очень хочется весь смотреть, ну или параметры вывода поменяйте в настройке ssms
Код: sql
1.
SELECT CAST('<root><![CDATA[' + @SQLQUERY + ']]></root>' AS XML)
...
Рейтинг: 0 / 0
02.07.2018, 15:01
    #39668384
boltnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaKшутки за 300?
Отнюдь.

https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/print-transact-sql?view=sql-server-2017

авторA message string can be up to 8,000 characters long if it is a non-Unicode string, and 4,000 characters long if it is a Unicode string. Longer strings are truncated. The varchar(max) and nvarchar(max) data types are truncated to data types that are no larger than varchar(8000) and nvarchar(4000).
...
Рейтинг: 0 / 0
02.07.2018, 15:04
    #39668385
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
boltnik,

переоценил... шутка за 150 "смотри через select."
...
Рейтинг: 0 / 0
02.07.2018, 15:15
    #39668394
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaKну или параметры вывода поменяйте в настройке ssmsВ какой именно ветке?
Код: sql
1.
SELECT CAST('<root><![CDATA[' + @SQLQUERY + ']]></root>' AS XML)

Также срезает как Text
...
Рейтинг: 0 / 0
02.07.2018, 15:17
    #39668396
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

а нажать на xml ссылку?

Tools - Query Result - Sql server - Result to grid/text
...
Рейтинг: 0 / 0
02.07.2018, 15:28
    #39668402
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaKа нажать на xml ссылку?Нажимал, не полный текст запроса.
Tools - Query Result - Sql server - Result to grid/textКакой именно параметр менять?
...
Рейтинг: 0 / 0
02.07.2018, 15:34
    #39668406
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

утомляет...

вы уже исправили ошибку в 42 строке?
...
Рейтинг: 0 / 0
02.07.2018, 15:59
    #39668413
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaK,

Да, исправил. Но все равно срезает. Запускал код без EXEC - выгружался.
...
Рейтинг: 0 / 0
02.07.2018, 16:00
    #39668415
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikk,

а почему вы решили что это не весь запрос и вы не формируете кривой запрос с лишним AND?
...
Рейтинг: 0 / 0
02.07.2018, 16:03
    #39668416
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
TaPaKferzmikk,

а почему вы решили что это не весь запрос и вы не формируете кривой запрос с лишним AND?

Код: sql
1.
select right(@SQLQUERY, 255)


развеет мрак.
...
Рейтинг: 0 / 0
02.07.2018, 16:07
    #39668417
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
aleks222TaPaKferzmikk,

а почему вы решили что это не весь запрос и вы не формируете кривой запрос с лишним AND?

Код: sql
1.
select right(@SQLQUERY, 255)


развеет мрак.Такое же окончание текста SQL-запроса
...
Рейтинг: 0 / 0
02.07.2018, 16:09
    #39668418
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikkaleks222пропущено...


Код: sql
1.
select right(@SQLQUERY, 255)


развеет мрак.Такое же окончание текста SQL-запроса
и вывод у вас по прежнему не сложился?
...
Рейтинг: 0 / 0
02.07.2018, 16:12
    #39668421
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
ferzmikkТакое же окончание текста SQL-запроса 21537057
...
Рейтинг: 0 / 0
02.07.2018, 16:33
    #39668433
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nvarchar(max)
Заработало когда так написал
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET @MDXQUERY =
		N'''SELECT
			{[Measures].[Отгрузки шт]} ON 0,
			... FROM PROFIT)''';

EXEC (N'...	
	FROM OPENROWSET(
		''MSOLAP'',
		''Provider=MSOLAP.3;...'',
		' + @MDXQUERY + '
				...');


Через переменную не получается
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Nvarchar(max) / 25 сообщений из 43, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]