Thu*_*3eR 16 sql-server stored-procedures t-sql temporary-tables
我有一个将值存储在表变量中的存储过程。我选择这些值并在调用过程时返回它们。
我试图在另一个表变量中设置这些返回值,但我无法弄清楚。
ALTER PROCEDURE [dbo].[GetOrSetDomainId]
@DomainName varchar(50),
@DomainUrl varchar(50)
AS
BEGIN
DECLARE @DomainId bigint;
DECLARE @NumberOfRwos bigint;
DECLARE @DomainHistory TABLE
(
DomainId bigint,
HasHistory bit,
ServerOnline bit,
DatabaseOnline bit,
ServerPerformance bigint,
DatabasePerformance bigint,
SoldTickets bigint
)
SELECT @NumberOfRwos = COUNT(Id)
FROM DomainData
WHERE DomainName = @DomainName OR DomainUrl = @DomainUrl
IF(@NumberOfRwos = 0)
BEGIN
INSERT INTO DomainData (DomainName, DomainUrl) VALUES (@DomainName, @DomainUrl)
SELECT @DomainId = @@IDENTITY
INSERT INTO @DomainHistory(DomainId,HasHistory)VALUES(@DomainId, 0)
SELECT * FROM @DomainHistory
END
ELSE
BEGIN
---not important here----
END
END
Run Code Online (Sandbox Code Playgroud)
我使用以下方法调用该过程:
DECLARE @DomainHistory TABLE
(
DomainId bigint,
HasHistory bit,
ServerOnline bit,
DatabaseOnline bit,
ServerPerformance bigint,
DatabasePerformance bigint,
SoldTickets bigint
)
SET @DomainHistory = EXEC GetOrSetDomainId 'test', 'test2'
---Other alternatives:---
INSERT INTO @DomainHistory(DomainId,HasHistory)
VALUES(EXEC GetOrSetDomainId 'test', 'test2')
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Mar*_*son 20
要将结果插入表中,您只需要查询INSERT....EXEC...的VALUES部分。
在您的情况下,这将如下所示:
INSERT INTO @DomainHistory(DomainId,HasHistory)
EXEC GetOrSetDomainId 'test', 'test2';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61613 次 |
| 最近记录: |