2016-12-16 4 views
0

私は既にいくつかのストアドプロシージャを持っており、今はそのストアドプロシージャを1つ作成したいと考えています。同じストアドプロシージャの列値を参照する方法

私のストアドプロシージャのコードは次のようになります。

最初 Selectクエリで
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 

AppName値は、この「サイト1」のようなものです。

そして、私は句

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

しかし、私はそれを作ることができる方法I`mがわからない二SELECTクエリでContentDBAppnameと比較するAppName値を使用したい...

誰かが私を助けてください

+0

新しいSPの入力パラメータは何ですか? '@ AppUrl'のみ?実際には、2番目のSPは、SP1のものを含むすべての必須の列を返すことができます – Squirrel

+0

はい、新しいSPパラメータ値は@AppUrlのみで、AppName値とContentDBAppName値は同じ部分です。だから私はAppNameの値を参照してContentDBAppNameの値と比較する方法を見つけようとしています –

+0

これは簡単に実現できますが、同じストアドプロシージャで2つの無条件selectステートメントを持つことはできません。 – Susang

答えて

1

あなたの2番目のselectステートメントは以下のようになります。あなたは既に参加のAppNameに参加していますので、追加することができますおよびの条件は、 とAND WA.AppUrl = @AppUrlまたはwhereで指定します。

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 

AppNameは最初のselect文とまったく同じであり、期待通りに同じように動作します。

+0

ああ、ありがとうSuraz、私はあなたの助言からspを作った、そしてそれは完璧に壊れた!また、あなたの詳細な説明に感謝:) –

関連する問題