Sql server Can';t将CTE结果放入临时表
我有一个SP,我需要将CTE结果放在一个临时表中,以便以后在SP中使用临时表。因为我是新来的,所以我遇到了困难。请帮帮我Sql server Can';t将CTE结果放入临时表,sql-server,tsql,Sql Server,Tsql,我有一个SP,我需要将CTE结果放在一个临时表中,以便以后在SP中使用临时表。因为我是新来的,所以我遇到了困难。请帮帮我 CREATE TABLE #TempTable1 ( tmp_id INT NULL, tmp_parent_id INT NULL, temp_level VARCHAR(50) NULL, temp_order VARCHAR(50)
CREATE TABLE #TempTable1 (
tmp_id INT NULL,
tmp_parent_id INT NULL,
temp_level VARCHAR(50) NULL,
temp_order VARCHAR(50) NULL,
temp_promoter_ID INT NULL
);
DECLARE @promoterid INT = (
SELECT
p.promoterid
FROM dbo.Promoters p
INNER JOIN dbo.UserProfile u
ON u.UserId = p.UserProfileId
WHERE u.UserName = @Username
);
;WITH Empl_Tab (Id, ParentId, LEVEL, [Order], promoterid) AS (
SELECT
promoters.UserProfileId AS ID,
promoters.Level1 AS ParentID,
0 AS LEVEL,
CONVERT([VARCHAR](MAX), promoters.PromoterId) AS [Order],
promoters.PromoterId
FROM promoters
WHERE Promoters.PromoterId = @promoterid
UNION ALL
SELECT
p.UserProfileId AS ID,
p.Level1 AS ParentID,
Empl_Tab.LEVEL + 1 AS LEVEL,
Empl_Tab.[Order] + CONVERT([VARCHAR](30), p.PromoterId) AS [Order],
p.PromoterId
FROM Promoters p
INNER JOIN Empl_Tab
--inner join dbo.UserProfile u on u.UserId= Promoters.UserProfileId
ON Empl_Tab.promoterid = p.Level1
--where p.Active!=2
)
--select Id, ParentId, LEVEL,[Order],promoterid from Empl_Tab
INSERT INTO #TempTable1 --(tmp_id, tmp_parent_id, temp_level, temp_order, temp_promoter_ID )
SELECT *
FROM Empl_Tab;
现在,我想将Emp1_选项卡
结果放入临时表,并希望稍后在同一SP中使用临时表数据
过程TeamCustomerListNew、第42行字符串或二进制数据将被截断
上面的错误消息指出,您插入的一个值超过了最大长度。临时表的temp\u order
列只允许50个字符。您可能需要增加它或使用VARCHAR(MAX)
代替:
CREATE TABLE #TempTable1 (
tmp_id INT NULL,
tmp_parent_id INT NULL,
temp_level INT NULL,
temp_order VARCHAR(MAX) NULL,
temp_promoter_ID INT NULL
);
此外,temp\u level
应为INT
过程TeamCustomerListNew、第42行字符串或二进制数据将被截断
上面的错误消息指出,您插入的一个值超过了最大长度。临时表的temp\u order
列只允许50个字符。您可能需要增加它或使用VARCHAR(MAX)
代替:
CREATE TABLE #TempTable1 (
tmp_id INT NULL,
tmp_parent_id INT NULL,
temp_level INT NULL,
temp_order VARCHAR(MAX) NULL,
temp_promoter_ID INT NULL
);
另外,temp\u level
应该是INT
这里有什么问题?有错误消息吗?首先,我不知道Emp1_选项卡数据是否分配给临时表。第二,当我运行total sp时,它给出错误“Msg 8152,级别16,状态10,过程TeamCustomerListNew,第42行字符串或二进制数据将被截断”。这里有什么问题?有错误消息吗?首先,我不知道Emp1_选项卡数据是否分配给临时表。第二,当我运行total sp时,它给出错误“Msg 8152,级别16,状态10,过程TeamCustomerListNew,第42行字符串或二进制数据将被截断。”