SQL Server 2008 Proc дает сбой в 2005 году - PullRequest
1 голос
/ 23 июля 2010
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?

-Скотт

1 Ответ

5 голосов
/ 23 июля 2010

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 ...

Сохранит исходную семантику и приведет к ошибке в этом событии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...