Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 如何从存储过程中获取返回行数-SQL Server 2012_Stored Procedures_Sql Server 2012_Rdbms - Fatal编程技术网

Stored procedures 如何从存储过程中获取返回行数-SQL Server 2012

Stored procedures 如何从存储过程中获取返回行数-SQL Server 2012,stored-procedures,sql-server-2012,rdbms,Stored Procedures,Sql Server 2012,Rdbms,我正在SQL Server 2012中编写一个存储过程,在读取存储过程在匹配所有条件和联接条件后将返回的行数时遇到了问题 我的存储过程是: SELECT DISTINCT COUNT(crs.CourseId) OVER() AS Recordcounts, crs.CourseId, crs.CourseName, crs.CourseDescription, (SELECT CourseGroupName FROM CourseGroup cgrp

我正在SQL Server 2012中编写一个存储过程,在读取存储过程在匹配所有条件和联接条件后将返回的行数时遇到了问题

我的存储过程是:

SELECT DISTINCT
    COUNT(crs.CourseId) OVER() AS Recordcounts, 
    crs.CourseId,
    crs.CourseName,
    crs.CourseDescription,
    (SELECT CourseGroupName FROM CourseGroup cgrp 
     WHERE cgrp.CourseGroupId = crs.CourseGroupId) AS Category
FROM 
    Courses crs 
INNER JOIN 
    CourseRequests creq ON crs.CourseId = creq.CourseId
WHERE
    crs.Coursename <> ''''
它返回16作为其中一个条件的记录计数,但实际上,结果仅为3行

有人能帮我吗

谢谢

下面的屏幕截图将更清楚地说明其中一种情况的问题:

尝试以下方法:

;with cte as(
SELECT distinct
    crs.CourseId,
    crs.CourseName,
    crs.CourseDescription,
    (SELECT CourseGroupName FROM CourseGroup cgrp 
     WHERE cgrp.CourseGroupId = crs.CourseGroupId) AS Category
FROM 
    Courses crs 
INNER JOIN 
    CourseRequests creq ON crs.CourseId = creq.CourseId
WHERE
    crs.Coursename <> '''')

Select *, (select COUNT(CourseId) from cte) AS Recordcounts
from cte

我不明白你的意思。如果它返回的记录比预期的多,那么查询就有问题。SP如何影响这一点?此外,我没有看到GROUPBY语句,因此我猜测有16条记录满足筛选条件,并且所有记录计数都是1。对吗?它返回的是正确的记录,但Recordcounts中的值是16,其中实际结果只有3行,所以Recordcounts应该是3,但我不知道如何获得它。你能试试这个吗?按crs.CourseId选择distinct countcrs.CourseId作为记录计数,crs.CourseId,crs.CourseName,crs.CourseDescription,从CourseGroup cgrp中选择CourseGroupName,其中cgrp.CourseGroupId=crs.CourseGroupId作为类别从Courses crs内部连接CourseRequests crs上的creq.CourseId=creq.CourseId其中crs.Coursename此屏幕截图将更清楚地说明问题:上述建议无效?我看不到截图