如何使用现有表和新列将数据插入临时表

时间:2019-02-12 23:06:54

标签: sql-server stored-procedures

我正在尝试将数据插入存储过程中的临时表中。从现有表中选择数据,然后使用串联数据创建新列。我收到一个错误,指出列名或提供的值数与表定义不匹配。我可以肯定应用程序中的代码是正确的,因此我认为问题在于将数据存储在临时表中的方式。

这是我的进程:

let classKeys = ['math', 'robotics'];
let classesInList = [{key : "WIHUGDYVWJ", className : 'math'},{key : "qwljdhkuqwdnqwdk", className : 'english'},{key : "likubqwd", className : 'robotics'}];

let filteredClasses = classesInList.filter(cls => classKeys.includes(cls.className));

console.log(filteredClasses);

1 个答案:

答案 0 :(得分:0)

我认为这是您的问题

SET @Link2 = (SELECT USER.ID FROM USER WHERE USER.Registered = 'Yes')

如果有六个呢?一个变量不能容纳所有变量。您可以这样做:

SELECT TOP(1) @Link2 = USER.ID FROM USER WHERE USER.Registered = 'Yes' ORDER BY [SOMETHING];

如果目标是创建一个具有完整[WEBSITE_LINK]的临时表,则可以在没有所有这些变量的情况下执行此操作:

BEGIN
    CREATE TABLE #TempTable
    ( 
        [ID] [varchar](10),
        [FIRST_NAME] varchar(50),
        [LAST_NAME] varchar(50),
        [WEBSITE_LINK] varchar(200)
    )

    INSERT INTO #TempTable
        SELECT DISTINCT u.ID
            , [FIRST_NAME] = u.FIRSTNAME
            , [LAST_NAME] = u.LASTNAME
            , [WEBSITE_LINK] = 'http://www.mywebsite.com/user/' + 
                CAST(u.ID AS VARCHAR(10)) + 
                '/document.doc'
        FROM [USER] u   
        WHERE u.Registered = 'Yes'

    -- Do something with these values...

    DROP TABLE #TempTable
END