SQL Server SELECT INTO @variable?

标签 sql sql-server tsql sql-server-2008

我的一个 Sql (2008) 存储过程中有以下代码,它执行得非常好:

    CREATE PROCEDURE [dbo].[Item_AddItem]
        @CustomerId uniqueidentifier,
        @Description nvarchar(100),
        @Type int,
        @Username nvarchar(100),
    AS
    BEGIN

        DECLARE @TopRelatedItemId uniqueidentifier;
        SET @TopRelatedItemId = 
        (
           SELECT top(1) RelatedItemId 
           FROM RelatedItems 
           WHERE CustomerId = @CustomerId
        ) 

        DECLARE @TempItem TABLE
        (
            ItemId uniqueidentifier,
            CustomerId uniqueidentifier,
            Description nvarchar(100),
            Type int,
            Username nvarchar(100),
            TimeStamp datetime
        );

        INSERT INTO Item
        OUTPUT INSERTED.* INTO @TempItem
        SELECT NEWID(), @CustomerId, @Description, @Type, @Username, GETDATE()

        SELECT
            ItemId,
            CustomerId,
            @TopRelatedItemId,
            Description,
            Type,
            Username,
            TimeStamp
        FROM
            @TempItem
END
GO

所以你们的问题是是否有可能做一些类似的事情:

DECLARE @TempCustomer TABLE
(
   CustomerId uniqueidentifier,
   FirstName nvarchar(100),
   LastName nvarchar(100),
   Email nvarchar(100)
);
SELECT 
    CustomerId, 
    FirstName, 
    LastName, 
    Email 
INTO 
    @TempCustomer 
FROM 
    Customer
WHERE 
    CustomerId = @CustomerId

这样我就可以在以下其他语句中重用内存中的这些数据? SQL Server 与上述语句不符,但是我不想创建单独的变量并通过针对同一个表的单独 SELECT 语句初始化每个变量....UGH!!!

关于如何在不对同一个表进行多次查询的情况下实现某些目标,有什么建议吗?

最佳答案

如果您想简单地分配一些变量以供以后使用,您可以使用以下方式一次性完成它们:

declare @var1 int,@var2 int,@var3 int;

select 
    @var1 = field1,
    @var2 = field2,
    @var3 = field3
from
    table
where
    condition

如果这就是您想要的东西

关于SQL Server SELECT INTO @variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823880/

相关文章:

SQL 列到 TextBox(来自 ComboBox)

sql - 如何根据时间戳确定一周的第一天和最后一天?

sql-server - 名称以 `TT_` 开头的表是什么?

SQL 声明变量

tsql - 从链接服务器传输表数据的更快方法

SQL根据日期范围检索另一个表中缺少记录的记录列表

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : error in SQL syntax

sql - 为什么我的用户表没有列错误?

c# - 获取 SQL 数据并将其显示在文本框中?

tsql - 在 TSQL 中,在标识字段上按顺序创建一堆记录的最佳方法是什么?