存储过程返回varchar(MAX)



我需要帮助从存储过程返回'xmlstring' (varchar(MAX))。它的工作很好,如果我测试计数'xmlstring'的数量,但我如何得到实际的字符串返回代替?

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


我不想这样做,但这是不正确的:

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

是这样的:

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

不需要返回,除非是函数

选择语句将返回,并且您可以放置多个语句,这些语句称为ResultSet

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

就这样:

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

您不需要变量,也不需要TOP,除非id不是唯一的(在这种情况下,您可以考虑除TOP之外的其他内容,例如MIN()、MAX()或其他一些过滤条件,因为您无法真正预测TOP将返回哪条记录)

最新更新