调用存储过程并检查返回值

时间:2013-06-24 13:22:35

标签: c# .net sql sql-server

我有一个名为pat_selectPatientById的存储过程,该存储过程使用ISNULL(@isEqual, 0) as IsProviderSameAsPCP返回true或false。

我试图通过调用Application.WebService.ExecuteQuery("pat_selectPatientById")使用C#方法调用此存储过程。但我没有运气 - 有人能指出我正确的方向吗?

非常感谢你们

代码:

declare @isEqual bit = 
    (select 
        top 1 1 as IsEqual 
    from 
         Patient p 
    inner join 
         [Resource] r on p.ProviderId = r.ResourceId
    where 
        PatientId = @PatientId
        and p.PrimaryCareProviderId = r.RefPhysId)

2 个答案:

答案 0 :(得分:3)

您需要从存储过程中返回值。

SELECT @isEqual

除了你需要一个SqlConnection对象和一个SqlCommand对象来调用存储过程。

conn = new SqlConnection(connectionString);
conn.Open();
SqlCommand cmd  = new SqlCommand("IsProviderSameAsPCP", conn);
cmd.CommandType = CommandType.StoredProcedure;
rdr = cmd.ExecuteReader();

然后,您可以使用rdr对象循环遍历结果集。

您可以在以下位置找到您的连接字符串:

http://www.connectionstrings.com/

即。 SQL Server 2008

string connectionString = "Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;";

答案 1 :(得分:2)

您需要在select中返回值。你的过程中的下一行需要

select @isEqual

即..     声明@isEqual bit =     (选择         前1 1为IsEqual     从          患者p内连接[资源] r          在p.ProviderId = r.ResourceId     哪里           PatientId = @PatientId           和p.PrimaryCareProviderId = r.RefPhysId)     选择@isEqual

ExecuteScalar是您正在寻找的C#中的命令。如果您有多个值并且不想返回表输出,也可以在存储过程中使用输出参数。