SQL Server 2008 Proc在2005年失败

Sco*_*ott 1 sql t-sql sql-server-2005 sql-server-2008

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
Run Code Online (Sandbox Code Playgroud)

你们知道这个过程如何写成05年才能成功吗?

斯科特

Mar*_*ith 5

SQL2005没有在同一语句中声明和赋值变量的语法.你需要改变

  DECLARE @ApplicantId int = (SELECT ...
Run Code Online (Sandbox Code Playgroud)

  DECLARE @ApplicantId int

  SELECT  @ApplicantId = AT.ApplicantId 
  FROM Lending.Applicant AT 
  WHERE AT.ApplicationId =   @ApplicationId
Run Code Online (Sandbox Code Playgroud)

编辑:

我刚刚想到,如果可以有多个行匹配,我可能会稍微改变语义AT.ApplicationId = @ApplicationId.

DECLARE @ApplicantId int

SET  @ApplicantId = (SELECT AT.ApplicantId ...
Run Code Online (Sandbox Code Playgroud)

将保留原始语义并在该事件中导致错误.