แทรกผลลัพธ์จากกระบวนงานที่เก็บไว้ในตัวแปรตาราง


12

ฉันมีขั้นตอนการจัดเก็บที่เก็บค่าในตัวแปรตาราง ฉันเลือกค่าเหล่านี้และส่งคืนเมื่อเรียกใช้โพรซีเดอร์

ฉันกำลังพยายามตั้งค่าส่งคืนเหล่านี้ในตัวแปรตารางอื่น แต่ฉันไม่สามารถหามันได้

ขั้นตอนการเก็บ

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

รหัสการโทร

ฉันเรียกขั้นตอนโดยใช้:

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')

ฉันจะทำสิ่งนี้ได้อย่างไร


อนึ่ง@@IDENTITYสามารถให้ค่าที่ไม่คาดคิดเมื่อมีการเรียกมีส่วนร่วม SCOPE_IDENTITY()โดยทั่วไปจะดีที่สุด เพิ่มเติม
จอนแห่งการค้าขายทั้งหมด

คำตอบ:


14

ในการแทรกผลลัพธ์ลงในตารางคุณเพียงแค่INSERT....EXEC...ไม่ต้องการให้เป็นVALUESส่วนหนึ่งของแบบสอบถาม

ในกรณีของคุณสิ่งนี้จะมีลักษณะดังนี้:

INSERT INTO @DomainHistory(DomainId,HasHistory)
EXEC GetOrSetDomainId 'test', 'test2';
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.