我试图用代码做的就是将带点名的模式和表名复制到一个变量中,出于某种原因,它给我的全部是第一个字母:
DECLARE @LABEL NVARCHAR
SELECT
@LABEL = LABEL
FROM(
SELECT
ROW_NUMBER() OVER(ORDER BY T.NAME) AS ROW_NUM,
CONCAT(S.name, '.', T.name) AS LABEL
FROM sys.tables AS T
INNER JOIN sys.schemas AS S
ON T.schema_id = S.schema_id
WHERE [object_id] <> '917578307' --the diagram table
) AS D
WHERE
ROW_NUM = 1
SELECT
@LABEL
目前,我正在使用的表位于dbo架构中,所以我得到的只是“d”。我做错了什么?
答案 0 :(得分:6)
本声明:
DECLARE @LABEL NVARCHAR;
没有长度。没有长度 - 在此上下文中 - SQL Server仅使用一个字符定义变量。
你需要一个长度:
DECLARE @LABEL NVARCHAR(255);
在SQL Server中使用字符声明时,总是包括长度。