如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

用户名

嗨,我想获取输出参数的值以及select查询的结果集。
我使用ExecuteNonQuery,它为输出参数提供适当的值。
我用ExecuteReader它没有为输出参数提供适当的值,但为选择查询提供了适当的值。
所以我应该用什么来获得两个结果。

    ALTER PROCEDURE [dbo].[XYZ] 
(  
 @szUserName varchar(50),  
 @iOutDistinceBankCount int out
)  
AS  
BEGIN  
declare @iCountDistinctBanks int;
set @iCountDistinctBanks = (select count (distinct a.DCC_BANK_ID )
 from DEF a with(nolock)
join ABC b with(nolock) on
 a.ROLEID = b.ROLEID
where b.USERNAME = @szUserName and b.STATUS_ID = 2)

if ((@iCountDistinctBanks > 1) or (@iCountDistinctBanks = 0))
    begin
        set @iOutDistinceBankCount = @iCountDistinctBanks 
    end

else
    begin
        set @iOutDistinceBankCount = 1;
            select a.DCC_BANK_ID as DCC_BANK_ID
            from DEF a with(nolock)
            join ABC b with(nolock) on
            a.ROLEID = b.ROLEID
            where b.USERNAME = @szUserName and b.STATUS_ID = 2
    end

END 

这是我的C#代码。

Int32 i32DistinctDCCBankCount = -1;
            Int64 i64BankStaticID = -1;
            InitDB();
            m_command = new SqlCommand("DCC_spUIDCCBankIdAccordingUser", m_con);
            m_command.Parameters.Add("@szUserName", System.Data.SqlDbType.VarChar, 50).Value = MerchantName;

            SqlParameter output = new SqlParameter("@iOutDistinceBankCount", System.Data.SqlDbType.Int);
            output.Direction = System.Data.ParameterDirection.Output;
            m_command.Parameters.Add(output);

            m_command.CommandType = System.Data.CommandType.StoredProcedure;
            m_con.Open();
           // m_reader = m_command.ExecuteReader();
            m_command.ExecuteNonQuery();
            i32DistinctDCCBankCount = Convert.ToInt32(m_command.Parameters["@iOutDistinceBankCount"].Value);


                    if (i32DistinctDCCBankCount == 0)
                    {
                        iDistinctDCCBankCount = 0;
                        return i32DistinctDCCBankCount;
                    }
                    else if (i32DistinctDCCBankCount > 1)
                    {
                        iDistinctDCCBankCount = i32DistinctDCCBankCount;
                        return -2;
                    }
                    else if (i32DistinctDCCBankCount == 1)
                    {
                        i64BankStaticID = Convert.ToInt64(m_reader["DCC_BANK_ID"]);
                        iDistinctDCCBankCount = i32DistinctDCCBankCount;
                        return i64BankStaticID;
                    }


            iDistinctDCCBankCount = 0;
            return 0;
阿南·达比(Anant dabhi)

可以使用Command.ExecuteReader(或ExecuteNonQuery,如果没有要处理的行集)直接执行相同的查询,但是还需要执行其他几个步骤来处理返回的值。请记住,尝试捕获Return值或OUTPUT参数之前,您必须完成所有行集的处理下面的代码显示如何使用ExecuteReader和循环来处理行集,然后捕获Return值和OUTPUT参数。您会发现OUTPUT参数(甚至很多参数)的处理速度甚至比SELECT返回的单行数据快得多

这是例子

    With cmd.Parameters
        cn.Open()
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        ' Process rowset(s)
        bolEOF = dr.Read
        Do
            Do While bolEOF = True
                ' Process rows
                bolEOF = dr.Read()
            Loop
        Loop While dr.NextResult = True
        cmd.Cancel()
// you need to close dataReader first
        dr.Close()


        Debug.WriteLine("@iOutDistinceBankCount:" & _
            .Item("@iOutDistinceBankCount").Value.ToString)
    End With

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

来自分类Dev

如何在vb.net代码中使用SQL Server存储过程中的OUT参数

来自分类Dev

如何在vb.net代码中使用SQL Server存储过程中的OUT参数

来自分类Dev

如何从存储过程中获取输出参数结果和查询结果?

来自分类Dev

如何返回SQL Server存储过程的计算(汇总)结果

来自分类Dev

如何获取sql server存储过程结果以在其他存储过程中处理?

来自分类Dev

如何在vb.net组合框中获取SQL Server存储过程的结果?

来自分类Dev

如何在SQL Server存储过程中使用if / else

来自分类Dev

如何在Qt中使用输入参数调用SQL Server存储过程

来自分类Dev

SQL Server:如何在存储过程中使用数据库名称作为参数?

来自分类Dev

如何在Qt中使用输入参数调用SQL Server存储过程

来自分类Dev

SQL Server:如何在存储过程中使用数据库名称作为参数?

来自分类Dev

如何在Oracle中使用sql server作为listagg在列表中选择输出结果

来自分类Dev

如何在ADO.NET中使用存储库和工作单元模式?

来自分类Dev

如何在Dot Net Core 3.1中使用FromSqlInterpolated / Database.ExecuteSqlInterpolated执行带有输出参数的存储过程?

来自分类Dev

如何在输出中调用聚合结果的存储过程?

来自分类Dev

LinqToSql如何生成存储过程的输出结果

来自分类Dev

如何在Oracle SQL Developer中将存储过程输出参数选择为表

来自分类Dev

如何从带有PHP预准备语句的SQL Server存储过程中返回多个结果?

来自分类Dev

如何将SQL Server存储过程结果返回到Excel

来自分类Dev

如何在SQL Server中使用存储过程在3个传递整数参数中查找最高的数字?

来自分类Dev

SQL Server:如何在选择查询中使用XPATH

来自分类Dev

如何在ASP.net中使用SQL查询的结果?

来自分类Dev

如何在C#的存储过程中使用输出参数

来自分类Dev

如何在SQL Server 2008中的单个存储过程中编写两个更新查询

来自分类Dev

将查询放入存储过程中时,SQL Server将不会返回结果

来自分类Dev

SQL Server存储过程发送的结果加密

来自分类Dev

如何设置SQL Server权限以使SSRS利用存储过程而不是嵌入式查询?

来自分类Dev

如何在存储过程中使用sql查询停止重复数据?

Related 相关文章

  1. 1

    如何在ado.net中使用输出参数并选择SQL Server存储过程的查询结果?

  2. 2

    如何在vb.net代码中使用SQL Server存储过程中的OUT参数

  3. 3

    如何在vb.net代码中使用SQL Server存储过程中的OUT参数

  4. 4

    如何从存储过程中获取输出参数结果和查询结果?

  5. 5

    如何返回SQL Server存储过程的计算(汇总)结果

  6. 6

    如何获取sql server存储过程结果以在其他存储过程中处理?

  7. 7

    如何在vb.net组合框中获取SQL Server存储过程的结果?

  8. 8

    如何在SQL Server存储过程中使用if / else

  9. 9

    如何在Qt中使用输入参数调用SQL Server存储过程

  10. 10

    SQL Server:如何在存储过程中使用数据库名称作为参数?

  11. 11

    如何在Qt中使用输入参数调用SQL Server存储过程

  12. 12

    SQL Server:如何在存储过程中使用数据库名称作为参数?

  13. 13

    如何在Oracle中使用sql server作为listagg在列表中选择输出结果

  14. 14

    如何在ADO.NET中使用存储库和工作单元模式?

  15. 15

    如何在Dot Net Core 3.1中使用FromSqlInterpolated / Database.ExecuteSqlInterpolated执行带有输出参数的存储过程?

  16. 16

    如何在输出中调用聚合结果的存储过程?

  17. 17

    LinqToSql如何生成存储过程的输出结果

  18. 18

    如何在Oracle SQL Developer中将存储过程输出参数选择为表

  19. 19

    如何从带有PHP预准备语句的SQL Server存储过程中返回多个结果?

  20. 20

    如何将SQL Server存储过程结果返回到Excel

  21. 21

    如何在SQL Server中使用存储过程在3个传递整数参数中查找最高的数字?

  22. 22

    SQL Server:如何在选择查询中使用XPATH

  23. 23

    如何在ASP.net中使用SQL查询的结果?

  24. 24

    如何在C#的存储过程中使用输出参数

  25. 25

    如何在SQL Server 2008中的单个存储过程中编写两个更新查询

  26. 26

    将查询放入存储过程中时,SQL Server将不会返回结果

  27. 27

    SQL Server存储过程发送的结果加密

  28. 28

    如何设置SQL Server权限以使SSRS利用存储过程而不是嵌入式查询?

  29. 29

    如何在存储过程中使用sql查询停止重复数据?

热门标签

归档