मेरे पास एक अद्यतन क्वेरी है जिसे मैंने संग्रहीत प्रक्रिया में संग्रहीत किया है।

मैं संग्रहीत कार्यविधि को निष्पादित करने के ठीक बाद अद्यतन क्वेरी सम्मिलित करना चाहता हूं। यहाँ मेरी संग्रहीत प्रक्रिया है।

ALTER PROCEDURE [dbo].[sp_assign_account]
    @id_agency int,
    @month nvarchar(2),
    @regional nvarchar(20),
    @top int,
    @assigned_by nvarchar(20)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE [AMAS].[dbo].[tbl_sample] 
    SET id_agency = @id_agency, 
        status = 'assigned', 
        stage = 'STA', 
        tgl_assign = GETDATE(), 
        assigned_by = @assigned_by  
    WHERE id_sample IN (SELECT  TOP (@top) a.id_sample 
                        FROM [AMAS].[dbo].[tbl_sample] a
                        LEFT JOIN mysystem.lapkeu.dbo.groupbranch b ON a.branch_id = b.BranchID
                        WHERE a.is_delete = '0' 
                          AND a.status = 'not assigned' 
                          AND a.stage = 'AMA' 
                          AND MONTH(a.insert_at) = @month
                          AND a.branch_id IN (SELECT branch_id 
                                              FROM mysystem.lapkeu.dbo.groupbranch 
                                              WHERE GroupBranchID IN (SELECT b.group_branch_id 
                                                                      FROM [AMAS].[dbo].[tbl_collector_agency] a
                                                                      JOIN [AMAS].[dbo].[tbl_area_collector] b ON a.id_collector = b.id_collector
                                                                      WHERE a.id_agency = @id_agency)
        ) 
        ORDER BY NEWID()
    )

    // can i put insert query here??
END

या क्या मुझे अद्यतन आईडी मिल सकती है? क्योंकि मैं अद्यतन करने के लिए यादृच्छिक डेटा का उपयोग करता हूं, इसलिए मैं अद्यतन से पहले आईडी प्रारंभ नहीं करता हूं।

3
Yohanes Erwin 21 जिंदा 2020, 06:58

1 उत्तर

सबसे बढ़िया उत्तर

आप इसे Output clause @Dale K की टिप्पणी के रूप में

DECLARE @Updated table(id_agency int, .. // Any property as you want)

UPDATE [AMAS].[dbo].[tbl_sample] SET id_agency = @id_agency, status = 'assigned', stage='STA', tgl_assign = getdate(), assigned_by = @assigned_by  
OUTPUT deleted.id_agency // Any property as you want
INTO @Updated
WHERE id_sample 
IN (////)

SELECT * FROM @Updated

@Updated परिणाम से, आप अपनी इच्छानुसार कुछ कर सकते हैं: Insert, Select, आदि।

बेहतर समझ के लिए निम्नलिखित ट्यूटोरियल पढ़ें।

https://www.sqlservercentral.com/articles/the-output-clause-for-update-statements

उदाहरण

enter image description here

3
Nguyễn Văn Phong 21 जिंदा 2020, 08:13