Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Результат выполнения sp_execute_sql  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
Разъясните несведомому как получить результат

запрос select QUOTENAME('[][]') возвращает результат [[]][]]]

а запрос exec sp_executesql N'SELECT QUOTENAME(@P1) AS quote_name',N'@P1 nchar(4000)',N'[][]'
возвращает NULL

Как корректно получить значение?

Еще интерсно узнать как получить текст выполнения BACKUP DATABASE ?
14 июн 12, 12:32    [12712844]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
 sp_executesql N'SELECT QUOTENAME(@P1) AS quote_name',N'@P1 nvarchar(4000)', @P1 = N'[][]'
14 июн 12, 12:33    [12712864]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
=Ozzy=
Еще интерсно узнать как получить текст выполнения BACKUP DATABASE ?
На сервере - никак.
14 июн 12, 12:34    [12712875]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
exec sp_executesql N'SELECT QUOTENAME(@P1) AS quote_name',N'@P1 nvarchar(4000)',N'[][]'

А лучше
exec sp_executesql N'SELECT QUOTENAME(@P1) AS quote_name',N'@P1 sysname',N'[][]'
14 июн 12, 12:34    [12712878]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
Гавриленко Сергей Алексеевич,

Что то не так. Не работает. Насколько я понимаю надо select @P2 = QUOTENAME(@P1), где @P2 выходной параметр.
Но правильно написать не могу.
Есть ли глобольная переменная хранящая результат?
14 июн 12, 12:38    [12712916]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
invm
exec sp_executesql N'SELECT QUOTENAME(@P1) AS quote_name',N'@P1 nvarchar(4000)',N'[][]'

А лучше
exec sp_executesql N'SELECT QUOTENAME(@P1) AS quote_name',N'@P1 sysname',N'[][]'


Запрос я выполняю с помощью ADO поэтому написал так как он формирует.
14 июн 12, 12:40    [12712935]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
=Ozzy=,
declare @result sysname;
exec sp_executesql N'SELECT @result = QUOTENAME(@P1)',N'@P1 sysname, @result sysname output', N'[][]', @result output;
select @result;
14 июн 12, 12:42    [12712956]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
=Ozzy=
Member

Откуда:
Сообщений: 228
invm
=Ozzy=,
declare @result sysname;
exec sp_executesql N'SELECT @result = QUOTENAME(@P1)',N'@P1 sysname, @result sysname output', N'[][]', @result output;
select @result;


Спасибо. Я заметил следующую фигню
если переменная nchar резульата нет
когда меняю на varchar,nvarchar и т.д. результат есть. Получается @P1 используется для возврата значения?
14 июн 12, 15:41    [12714394]     Ответить | Цитировать Сообщить модератору
 Re: Результат выполнения sp_execute_sql  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
QUOTENAME (Transact-SQL)
Синтаксис

QUOTENAME ( 'character_string' [ , 'quote_character' ] )


Аргументы
'character_string'
Строка символов в Юникоде. Аргумент character_string имеет тип sysname, а его длина ограничена 128 символами. Если ввести более 128 символов, будет возвращено значение NULL.

'quote_character'
Односимвольная строка, используемая в качестве разделителя. Может быть одинарной кавычкой ( ' ), открывающей или закрывающей квадратной скобкой ( [ ] ) или двойной кавычкой ( " ). Если значение аргумента quote_character не задано, то используются скобки.
14 июн 12, 16:29    [12714813]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить