2010-07-23 101 views
1
ALTER PROCEDURE [Lending].[uspHMDALarIncomeGet] (@ApplicationId int) 
AS 
BEGIN 
    SET NOCOUNT ON 
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

    -- Total Income Data 
    DECLARE @ApplicantId int = (SELECT AT.ApplicantId FROM Lending.Applicant AT WHERE AT.ApplicationId = @ApplicationId) 

    SELECT 
    I.Amount 
    FROM Lending.Income I WHERE I.ApplicantId = @ApplicantId 

END 

你们知道这个过程如何在05中成功吗?SQL Server 2008 Proc在2005年失败

斯科特

+0

你能告诉我们你收到了什么错误,以及这行是什么:DECLARE @ApplicantId int =(SELECT AT.ApplicantId FROM Lending.Applicant AT WHERE AT.ApplicationId = @ApplicationId) – mattmc3 2010-07-23 12:18:46

回答

5

SQL2005没有语法来声明,并在同一语句中指定一个变量。你需要改变

DECLARE @ApplicantId int = (SELECT ... 

DECLARE @ApplicantId int 

    SELECT @ApplicantId = AT.ApplicantId 
    FROM Lending.Applicant AT 
    WHERE AT.ApplicationId = @ApplicationId 

编辑:

这只是发生在我身上,我可能已经改变了语义的一点还有,如果有可能永远不会超过一行匹配AT.ApplicationId = @ApplicationId

DECLARE @ApplicantId int 

SET @ApplicantId = (SELECT AT.ApplicantId ... 

会保留原来的语义并在该事件中导致错误。

+0

我知道它必须做些小事!非常感谢你的救星。 – Scott 2010-07-23 12:17:11