我想写一个存储过程返回存款记录一个特定的人,存款的那个人,并且存款的那个人的行数目。参数@personID
总是提供正确PERSONID;然而@SpecificRow
是0(意思是:返回最近的存款)或行号(意思是:在这个特定的行返回记录)。SQL Server存储过程语法错误
脚本:
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
当我尝试运行ALTER语句,我得到以下错误:
Msg 102, Level 15, State 1, Procedure procedure, Line 33 [Batch Start Line 9]
Incorrect syntax near ''.
任何见解?
谢谢。
检查什么传递给帕拉姆@personID? –
@FullMoonFisher这不应该造成编译错误,只是执行。 – scsimon