Хранимая процедура возврата varchar (MAX) - PullRequest
1 голос
/ 02 ноября 2011

Мне нужна помощь, чтобы вернуть 'xmlstring' (varchar (MAX)) из хранимой процедуры.Это работает нормально, если я тестирую, чтобы посчитать количество 'xmlstring', но как мне получить реальную строку, возвращенную в инстаге?

ALTER PROCEDURE dbo.sp_test AS<br> DECLARE @Ret int<br> SELECT @Ret = COUNT(xmlstring) FROM database WHERE (id = 1)<br> RETURN @Ret

Я не хочу делать что-то подобное, но это не правильно:

ALTER PROCEDURE dbo.sp_test AS<br> DECLARE @Ret varchar(MAX)<br> SELECT @Ret = TOP (1) xmlstring FROM database WHERE (id = 1)<br> RETURN @Ret

Ответы [ 3 ]

0 голосов
/ 02 ноября 2011

Да, что-то вроде этого:

ALTER PROCEDURE dbo.sp_test AS
DECLARE @Ret varchar(MAX)
SELECT  TOP (1) xmlstring FROM database WHERE (id = 1)

Вам не нужно возвращать, если это не функция

Оператор выбора будет возвращен, и вы можете поставить более одного, этиВызовите ResultSet

0 голосов
/ 02 ноября 2011

Только так:

ALTER PROCEDURE dbo.sp_test AS
SELECT xmlstring FROM database WHERE (id = 1)

Вам не нужна переменная и вам не нужен TOP, если только id не уникален (в этом случае вы можете рассмотреть что-то, кроме TOP, например MIN (), MAX () или какой-то другой фильтр). критерии, так как вы не можете предсказать, какая запись TOP вернется)

0 голосов
/ 02 ноября 2011
SELECT TOP (1) xmlstring FROM database WHERE (id = 1)

Если вы хотите установить локальную скалярную переменную в том виде, в каком вы сейчас находитесь, она должна быть

ALTER PROCEDURE dbo.sp_test AS
DECLARE @Ret varchar(MAX)
Set @Ret = TOP (1) xmlstring FROM database WHERE (id = 1)
RETURN @Ret
...