【发布时间】:2011-03-02 19:46:59
【问题描述】:
我想使用类似于此处提到的 linq 返回动态 sql 查询的行数:
我使用动态sql创建where子句并对结果集实现分页,我要返回的rowcount是满足where条件的记录总数。
导致我出现问题的 SQL:
-- get row count
SET @SQL = '@TotalRowCount = SELECT COUNT(*) as TotalRowCount'
SET @SQL = @SQL + @WHERE
IF (LEN(@SUBWHERE) > 0)
BEGIN
SET @SQL = @SQL + @SUBWHERE
END
SET @SQL = @SQL + ')) '
exec sp_executesql @SQL
END
(我需要将其作为参数列表中的输出参数@TotalRowCount):
ALTER PROCEDURE [dbo].[_tournament_GetTournamentsByConveners]
(
@LastName varchar(100) = null ,
@Username varchar(256) = null ,
@Email varchar(100) = null ,
@IsWildcard bit = null,
@PageIndex int ,
@PageSize int,
@TotalRowCount int output
)
AS
【问题讨论】:
-
我缺少“LINQ 位”。如果有SP,就调用它? (LINQ2SQL 将生成支持
out值的存根。) -
使用 LINQ 时出现异常,我必须声明标量值 @TotalRowCount
-
我不完全理解你的问题,但也许应该是:
SELECT @TotalRowCount = COUNT(*) as TotalRowCount ...btw,你的 FROM 部分在哪里?我只看到 WHERE 部分。此外,您的查询中可能缺少一些空格。确保您的 @subwhere 包含两个左括号,而不是右括号。 -
这是 SP 的问题——与 LINQ 无关 :-) 例如,尝试从 SQL Management Studio 运行它。
标签: sql sql-server stored-procedures