我有一个连接查询:
DECLARE @path NVARCHAR(max)
SELECT @path = ISNULL(@path + '/', '') + url_segment
FROM navigation_self_and_parents(2813) ORDER BY depth ASC
SELECT @path
Run Code Online (Sandbox Code Playgroud)
navigation_self_and_parents(2813) 回报
Run Code Online (Sandbox Code Playgroud)id par_id title url_segment sequence depth 2813 2816 testing1234 testing1234 0 0 2816 2809 U /fixedurl 0 -1 2809 NULL E E 0 -2
我的串联查询返回
'testing1234' when using `NVARCHAR(MAX)` and 'E//fixedurl/testing1234' when using `NVARCHAR(4000)`
我最好的猜测是使用NVARCHAR(MAX)原因@path每次设置都要重新输入,因此在重新输入之前丢失了设置的内容,或者在第一次设置时输入,然后后续连接调用无声地失败.
我很想真正理解这种行为的根本原因.
UPDATE
navigation_self_and_parents:
USE [SomeDatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[navigation_self_and_parents]
(
@id int …Run Code Online (Sandbox Code Playgroud)