特定の人の預金レコード、その人の預金の数、およびその人の預金の行番号を返すストアドプロシージャを作成しようとしています。パラメータ@personID
には、常に正しいpersonIDが指定されています。 @SpecificRow
は0(最も最近の預金を返す)または行番号(意味:この特定の行のレコードを返す)です。SQL Serverストアドプロシージャ構文エラー
スクリプト:私はALTERステートメントを実行してみた場合
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [schema].[procedure]
@personID varchar(5),
@SpecificRow int,
@RowNumber INT OUTPUT,
@RowCount INT OUTPUT
AS
BEGIN
IF OBJECT_ID('#TempSortedDeposits') IS NOT NULL
DROP Table #TempSortedDeposits
-- get all deposits with record number into temp file for specific personID
SELECT
ROW_NUMBER() OVER (ORDER BY Date ASC) AS RecordNo, *
INTO
#TempSortedDeposits
FROM
persons.Deposits
WHERE
personID = @personID
-- get record count in file
SELECT @RowCount = COUNT(personID)
FROM persons.Deposits
WHERE personID = @personID
IF @SpecificRow = 0 --get most recent record
SET @RowNumber = @RowCount;
ELSE
--get record by rownumber
SET @RowNumber = @SpecificRow;
SELECT *
FROM #TempSortedDeposits
WHERE RecordNo = @RowNumber
END
、私は次のエラーを取得する:
Msg 102, Level 15, State 1, Procedure procedure, Line 33 [Batch Start Line 9]
Incorrect syntax near ''.
任意の洞察力?
ありがとうございました。
チェックに合格したもの#TempSortedDeposits FROM SELECT *のですか? –
@FullMoonFisherこれはコンパイル時にエラーを起こすべきではなく、実行するだけです。 – scsimon