संग्रहीत कार्यविधि से तालिका चर में परिणाम डालें


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';
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.