Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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
C# SQL服务器中另一个数据的输出子句值:C_C#_Sql Server - Fatal编程技术网

C# SQL服务器中另一个数据的输出子句值:C

C# SQL服务器中另一个数据的输出子句值:C,c#,sql-server,C#,Sql Server,我使用下面的查询来获取另一个数据的输出子句值 现在,我需要@RecordCount值和Select查询的另一个数据。如何在C中获得它?我使用的是三层体系结构,所以我创建了带有DataTableDataType的方法。那么,我需要做哪些更改呢?因为您还没有显示您的c代码-很难说您应该做哪些更改 但基本上-您不能在脚本中使用output关键字。它应该是存储过程的输出参数——所以您必须将逻辑封装到存储过程中,并从c代码中调用它 在这种情况下,您应该使用ParameterDirection.Output

我使用下面的查询来获取另一个数据的输出子句值


现在,我需要@RecordCount值和Select查询的另一个数据。如何在C中获得它?我使用的是三层体系结构,所以我创建了带有DataTableDataType的方法。那么,我需要做哪些更改呢?

因为您还没有显示您的c代码-很难说您应该做哪些更改

但基本上-您不能在脚本中使用output关键字。它应该是存储过程的输出参数——所以您必须将逻辑封装到存储过程中,并从c代码中调用它

在这种情况下,您应该使用ParameterDirection.Output向SqlCommand添加参数。执行命令后,可以从SqlParameter.value属性获取参数的返回值

另一种选择是重构SQL并执行以下操作

RETURN @@ROWCOUNT
可以在C中检索,注意返回值仅限于int类型

cmd.Parameters["@RETURN_VALUE"]
另外,避免像那样使用TempDb。没必要。更好的分页方法是使用内置的SQL分页

SELECT ...
FROM ...
WHERE ...
ORDER BY ...
OFFSET (@PageIndex - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY

你的标题有误导性。应该是如何在C中检索SQL数据?有很多选择…是的,没错。但我会得到Select查询的值吗?@JeetenParmar您将以与现在相同的方式从Select查询中获取数据。有很多可能的方法——使用SqlDataReader、SqlDataAdapter等等——我不知道您在使用什么。本质的变化是将逻辑包装到存储过程中,并调用此过程,以提供type=output的参数。将数据放入DataTable或DataSet的方法根本不会改变。是的,没错。但那个么我会得到Select查询的值吗?我从你们的代码中得到了想法,我已经解决了我的问题。谢谢你……:@Didaxis RETURN@@ROWCOUNT将返回受上次选择影响的行数,它与原始问题中的行数不同。最初@Records count是某些条件下的记录数,而resultset selected是其中的一些较小的子集。我不知道这是有意还是无意,但它与您的解决方案不同。@Andy,根据他最初的SQL语句,您完全正确。我确实说过,如果他重构代码,那么他可以使用@ROWCOUNT,但我可能应该进一步澄清这一点。
cmd.Parameters["@RETURN_VALUE"]
SELECT ...
FROM ...
WHERE ...
ORDER BY ...
OFFSET (@PageIndex - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY