C# 如何从存储过程中只获取一组数据?

C# 如何从存储过程中只获取一组数据?,c#,sql,sql-server-2000,C#,Sql,Sql Server 2000,我正在使用SQL Server 2000。 我的SP生成以下输出: 它将所有应纳税所得额(最高结果)相加,然后减去可扣除费用(中间结果)之和,得到员工的净应纳税所得额 我将如何获得净应税收入的价值 这是我的SP /* DECLARE @NET_TAXABLE_INCOME AS NUMERIC(19, 2) EXEC NET_TAXABLE_INCOME '000001', '10/15/2010', @NET_TAXABLE_INCOME OUTPUT SELECT @NET_TAXABLE

我正在使用SQL Server 2000。
我的SP生成以下输出:

它将所有
应纳税所得额
(最高结果)相加,然后减去
可扣除费用
(中间结果)之和,得到员工的
净应纳税所得额

我将如何获得净应税收入的价值

这是我的SP

/*
DECLARE @NET_TAXABLE_INCOME AS NUMERIC(19, 2)
EXEC NET_TAXABLE_INCOME '000001', '10/15/2010', @NET_TAXABLE_INCOME OUTPUT
SELECT @NET_TAXABLE_INCOME
*/
CREATE   PROC [dbo].NET_TAXABLE_INCOME
(
    @EMPLOYEENO AS VARCHAR(10),
    @PAYROLLPERIOD_INPUT AS DATETIME,
    @NET_TAXABLE_INCOME AS NUMERIC(19, 2) = NULL OUTPUT
)   
AS
BEGIN
    DECLARE @TAXABALEEARNINGS AS NUMERIC(18, 2)
    EXEC TAXABLE_EARNINGS_BREAKDOWN @EMPLOYEENO, @PAYROLLPERIOD_INPUT, @TAXABALEEARNINGS OUTPUT
    DECLARE @DEDUCTIBLEEXPENSES AS NUMERIC(18, 2)
    EXEC DEDUCTIBLE_EXPENSES_BREAKDOWN @EMPLOYEENO, @PAYROLLPERIOD_INPUT, @DEDUCTIBLEEXPENSES OUTPUT

    SET @NET_TAXABLE_INCOME = @TAXABALEEARNINGS - @DEDUCTIBLEEXPENSES   
    SELECT @NET_TAXABLE_INCOME AS [NET_TAXABLE_INCOME]
END

是否存在导致不打印执行结果的SQL语句?

您可以将已执行存储过程的结果放在临时表中

CREATE TABLE #Tmp (etc etc)

INSERT #Tmp
EXEC DEDUCTIBLE_EXPENSES_BREAKDOWN @EMPLOYEENO, @PAYROLLPERIOD_INPUT, @DEDUCTIBLEEXPENSES OUTPUT
但是您也可以将它与EXEC命令结合使用,这就是捕获存储过程输出的答案。您只需创建一个表,通过INSERT语句接收存储过程的输出:

关键是创建表(本例中是一个临时表),使其具有正确的列数和兼容的数据类型,以捕获存储过程的输出

注意:语法是psuedo语法,但我希望你能理解

这样,您就可以丢弃这些结果——因为这就是您的意图,而不会影响调用存储过程的输出

但是,如果这些存储过程在你的控制之下,你应该考虑如果你真的想要重用它们/改变,那么只返回输出PARAM而不是RESUTTSET。您无需返回不打算使用的数据,至少在本例中

在C端,您可以执行以下操作:

SqlDataReader sqlReader = sqlCmd.ExecuteReader();
sqlReader.NextResult(); // Skip first result set.
sqlReader.NextResult(); // Skip second result set.
while (sqlReader.Read())
{
    var netTaxableIncome = sqlReader.GetValue(0);
}

隐马尔可夫模型。。。我已经试过了。但是有一些限制,这样做会导致错误()。“它不能嵌套,因此一次只能有一个INSERT-EXEC处于活动状态。”@yonan2236-这些存储过程是否也调用其他SP,是吗?另外,我假设您无法控制修改这些SP,是吗?如果我没有找到答案,这正是我要发布的答案。