2

我有一个名为的存储过程pat_selectPatientById,该存储过程使用ISNULL(@isEqual, 0) as IsProviderSameAsPCP.

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

非常感谢各位

代码:

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)
4

2 回答 2

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;";
于 2013-06-24T13:26:53.887 回答
2

您需要在选择中返回值。您的过程中的下一行需要是

select @isEqual

即..声明@isEqual bit =(从Patient p inner join [Resource] r on p.ProviderId = r.ResourceId 选择top 1 1 as IsEqual,其中PatientId = @PatientId 和p.PrimaryCareProviderId = r.RefPhysId)选择@isEqual

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

于 2013-06-24T13:27:52.930 回答