ble*_*ter 235 sql t-sql sql-server 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
Run Code Online (Sandbox Code Playgroud)
所以你们的问题是有可能做一些事情:
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
Run Code Online (Sandbox Code Playgroud)
这样我可以在以下其他语句中重用内存中的这些数据?SQL Server与上面的语句一致,但是我不想创建单独的变量并通过针对同一个表的单独SELECT语句初始化它们中的每一个.... UGH !!!
关于如何在没有针对同一个表的多个查询的情况下实现某些事情的任何建议?
dou*_*ald 479
如果你想简单地指定一些变量供以后使用,你可以一次性完成这些变换:
declare @var1 int,@var2 int,@var3 int;
select
@var1 = field1,
@var2 = field2,
@var3 = field3
from
table
where
condition
Run Code Online (Sandbox Code Playgroud)
如果这就是你追求的东西
Ric*_*iwi 197
你不能SELECT .. INTO ..一个表VARIABLE.您可以做的最好是先创建它,然后插入它.你的第二个片段必须是
DECLARE @TempCustomer TABLE
(
CustomerId uniqueidentifier,
FirstName nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
);
INSERT INTO
@TempCustomer
SELECT
CustomerId,
FirstName,
LastName,
Email
FROM
Customer
WHERE
CustomerId = @CustomerId
Run Code Online (Sandbox Code Playgroud)
Vic*_*loy 30
你可以这样做:
SELECT
CustomerId,
FirstName,
LastName,
Email
INTO #tempCustomer
FROM
Customer
WHERE
CustomerId = @CustomerId
Run Code Online (Sandbox Code Playgroud)
然后
SELECT CustomerId FROM #tempCustomer
Run Code Online (Sandbox Code Playgroud)
你不需要声明#tempCustomer的结构
小智 14
看起来你的语法略有不同.这有一些很好的例子
DECLARE @TempCustomer TABLE
(
CustomerId uniqueidentifier,
FirstName nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
);
INSERT @TempCustomer
SELECT
CustomerId,
FirstName,
LastName,
Email
FROM
Customer
WHERE
CustomerId = @CustomerId
Run Code Online (Sandbox Code Playgroud)
然后
SELECT CustomerId FROM @TempCustomer
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
751044 次 |
最近记录: |