从输出参数C#获取值 [英] Get the value from Output parameter C#

查看:128
本文介绍了从输出参数C#获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在sql中使用输出值创建sp
这是代码

hi i'm try to create sp in sql with output value
this is the code

ALTER PROCEDURE [dbo].[usp_SelectHospital_IfExiste_Department]
@HospitalDepartmentID INT,
@IfExiste INT OUTPUT 
AS

    SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
IF NOT EXISTS  (SELECT c.DeptID FROM Clinic c WHERE DeptID=@HospitalDepartmentID )
BEGIN


    SET @IfExiste=0

SELECT
    [HospitalDepartmentID],
    [NAME]
FROM
    [dbo].[Hospital_Department]
WHERE
    [HospitalDepartmentID] = @HospitalDepartmentID

END

ELSE
BEGIN
    SET @IfExiste=1

SELECT
    [HospitalDepartmentID],
    [NAME]
FROM
    [dbo].[Hospital_Department]
WHERE
    [HospitalDepartmentID] = @HospitalDepartmentID
    END

和C#代码

public static Hospital_Department GetDepartmentInfo(int ID,int OutIfExist)
        {
            SqlCommand cmd;
            SqlDataReader dr;
            Hospital_Department HD = new Hospital_Department();
            using (cmd = new SqlCommand("usp_SelectHospital_IfExiste_Department", ProjectCon.GetCon()))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@HospitalDepartmentID", ID);
                //cmd.Parameters.Add("@IfExiste",SqlDbType.Int).Direction = ParameterDirection.Output;
                cmd.Parameters.Add("@IfExiste",SqlDbType.Int);
                cmd.Parameters["@IfExiste"].Direction = ParameterDirection.Output;
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    HD.NAME = dr["NAME"].ToString();
                    HD.HospitalDepartmentID = Convert.ToInt32(dr["HospitalDepartmentID"]);
                }
                OutIfExist = Convert.ToInt32(cmd.Parameters["@IfExiste"].Value);
                return HD;
            }

        }

当我尝试获取输出值时始终为null 我在SQL中运行存储过程被运行并返回值 所以请告诉我我的代码有什么问题

when i try to get the output value is always null and i run the stored procedure in sql Was run and return the value so plz tell me what's wrong in my code thx

推荐答案

也许这

Maybe this question has useful info:

根据 http://msdn.microsoft.com/en -us/library/ms971497 ,则必须先关闭数据读取器,然后再处理输出参数.

According to, http://msdn.microsoft.com/en-us/library/ms971497, you must close the datareader before you process the output parameters.

希望有帮助.

这篇关于从输出参数C#获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆