Reputation:
I have 4 stored procedures.
The following is used to be invoked by C#:
ALTER PROCEDURE [dbo].[sp_retrieveResourceShell]
AS
BEGIN
SET NOCOUNT ON
DECLARE @result NVARCHAR(MAX)
EXEC [dbo].[sp_retrieveResTree]
@pid = NULL,
@ret = @result OUTPUT
***select*** @result
END
These are internal stored procedures:
ALTER PROCEDURE [dbo].[sp_retrieveResTree]
(@pid UNIQUEIDENTIFIER,
@ret NVARCHAR(MAX) OUTPUT)
AS
BEGIN
DECLARE @mdlId UNIQUEIDENTIFIER,
@mdlGroup NVARCHAR(MAX)
DECLARE mdlCursor CURSOR FOR
......
DECLARE @subRet NVARCHAR(MAX),
@viewRet NVARCHAR(MAX)
EXEC [dbo].[sp_retrieveResTree]
@pid = @mdlId,
@ret = @subRet OUTPUT
EXEC dbo.sp_retrieveResView
@mdlId = @mdlId,
@ret = @viewRet OUTPUT
SET @mdlGroup = @mdlGroup + FORMATMESSAGE('{"Id":"%s","Name":"%s","Subs":%s,"Views":%s},'...)
.......
SET @ret = FORMATMESSAGE('[%s]',@mdlGroup)
END
ALTER PROCEDURE [dbo].[sp_retrieveResView]
(@mdlId UNIQUEIDENTIFIER,
@ret NVARCHAR(MAX) OUTPUT)
AS
BEGIN
SET @ret = FORMATMESSAGE('[%s]',@viewGroup)
END
When I invoke sp_retrieveResourceShell
like this:
DECLARE @return_value int
EXEC @return_value = [dbo].[sp_retrieveResourceShell]
SELECT 'Return Value' = @return_value
I can get a truncated string with ellipsis at the string tail. how to get the full string without ellipsis?
update
Changed formatmessage function to string concatenation likes
SET @mdlGroup = @mdlGroup + '{"Id":"' + CAST(@mdlId AS CHAR(36))+ '","Name":"' + @mdlName + '","Subs":' + @subRet + ',"Views":' + @viewRet +'},'
Upvotes: 1
Views: 450
Reputation:
when using string concatenation , likes
SET @ret = N'[' + @mdlGroup + N']'
and refernce to [n]varchar(max) + [n]varchar(max)
i got the right full string . Thanks to @MartinSmith at the same time .
Upvotes: 1