如何在同一存储过程中引用列值

时间:2016-12-16 02:28:43

标签: sql-server tsql stored-procedures parameters

我已经有了一些存储过程,现在我想让它成为一个存储过程。

我的存储过程代码如下所示:

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值就像这样&#34; Site1&#34;。

我希望在第二个AppName查询where子句

中使用ContentDBAppname值与SELECT进行比较
WHERE
    CD.ContentDBAppName = [how to get AppNames value]

但我不知道怎么能做到......

请有人帮助我

1 个答案:

答案 0 :(得分: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,并将根据您的期望在连接中执行相同的操作。