2016-12-16 61 views
0

我已經有了一些存儲過程,現在我想讓它成爲一個存儲過程。如何在同一個存儲過程中引用列值

我的存儲過程的代碼如下所示:

ALTER PROCEDURE [dbo].[UP_SELECT_TargetSiteStatus_For_ExcelExport] 
    @AppUrl nvarchar(200) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    -- Web Application 
    SELECT 
     AppName, AppUrl, AppPort, 
     AppDefaultTimeZone, AppMaxiumFileSize, 
     AppContentDatabaseCount, AppSitesCount 
    FROM 
     tb_SPStatusWebApplications 
    WHERE 
     AppUrl = @AppUrl  

    -- Content Database 
    SELECT 
     ContentDBAppName, ContentDBID, ContentDBName, 
     ContentDBServerName, ContentDBStatus, 
     ContentDBSize, ContentDBSiteCount 
    FROM 
     tb_SPStatusContentDatabases CD 
    INNER JOIN 
     tb_SPStatusWebApplications WA ON CD.ContentDBAppName = WA.AppName 
    WHERE 
     CD.ContentDBAppName = ? <-- Change this... 
END 

在第一Select查詢,AppName值是這樣的 「站點1」。

而且我想用AppName值在第二SELECT查詢與ContentDBAppname比較where子句

WHERE 
    CD.ContentDBAppName = [how to get AppNames value] 

但我真的不知道我怎樣才能使它...

請有人幫助我

+0

什麼將是您的新SP的輸入參數?只有'@ AppUrl'?實際上,您的第二個SP將能夠返回所有必需的列,包括那些在SP1 – Squirrel

+0

是新的SP參數值僅爲@AppUrl,並且AppName值和ContentDBAppName值是相同的部分。所以我嘗試找到如何引用AppName值並與ContentDBAppName值進行比較 –

+0

您可以輕鬆實現,但在同一個存儲過程中不能有兩個無條件的select語句,它將始終使用最後一個select語句返回值。 – Susang

回答

1

請嘗試這個:您的第二個選擇語句如下,並且您已經加入了AppName,因此您可以添加AND條件爲 AND WA.AppUrl = @ AppUrl或在哪裏。

SELECT 
     ContentDBAppName 
    , ContentDBID 
    , ContentDBName 
    , ContentDBServerName 
    , ContentDBStatus 
    , ContentDBSize 
    , ContentDBSiteCount 
FROM tb_SPStatusContentDatabases CD 
INNER JOIN tb_SPStatusWebApplications WA ON CD.ContentDBAppName = WA.AppName 
    AND WA.AppUrl = @AppUrl 

它將返回與第一個select語句完全相同的AppName,並根據您的期望在連接中執行相同的操作。

+0

哦,謝謝你,Suraz,我從你的建議中提出了一個建議,而且它完美無缺!也感謝您的詳細解釋:) –

相關問題