我有一个名为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)
答案 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#中的命令。如果您有多个值并且不想返回表输出,也可以在存储过程中使用输出参数。