【发布时间】:2015-10-11 18:22:15
【问题描述】:
我正在尝试使用 ASP.net 2010 和 SQL Server 创建一个简单的网站。 在调用过程 Pager 后,我被错误“必须声明标量变量“@IDAlbum”阻止(参见下面的代码)。 有人可以帮我解决这个 pbm 问题吗?
USE [Portfolio]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Pager]
(@PageNo int = 1,
@ItemsPerPage int = 2,
@IDAlbum int,
@TotalRows int out)
AS
BEGIN
SET NOCOUNT ON
DECLARE
@StartIdx int,
@SQL nvarchar(max),
@SQL_Conditions nvarchar(max),
@EndIdx int
IF @PageNo < 1 SET @PageNo = 1
IF @ItemsPerPage < 1 SET @ItemsPerPage = 10
SET @StartIdx = (@PageNo -1) * @ItemsPerPage + 1
SET @EndIdx = (@StartIdx + @ItemsPerPage) - 1
SET @SQL = 'SELECT picture
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY IDAlbum) AS Row, *
FROM Album_Pic WHERE IDAlbum = @IDAlbum )
AS tbl WHERE
Row >= ' + CONVERT(varchar(9), @StartIdx) +
' AND Row <= ' + CONVERT(varchar(9), @EndIdx)
EXEC sp_executesql @SQL
SET @SQL = 'SELECT @TotalRows=COUNT(*) FROM Album_Pic WHERE IDAlbum = ' + CONVERT(varchar(9), @IDAlbum)
EXEC sp_executesql
@query = @SQL,
@params = N'@TotalRows INT OUTPUT',
@TotalRows = @TotalRows OUTPUT
END
【问题讨论】:
-
我讨厌人们写动态 Sql 为什么你不写不带引号的 SQL..sql-server-helper.com/error-messages/msg-137.aspx
标签: c# sql asp.net sql-server