2010-09-01 3 views
1

Я создал хранимую процедуру, показанную ниже, как я буду называть это из кода C#, чтобы получить результат, и результаты хранятся в наборе данных.Как вызвать хранимую процедуру с параметрами из кода C# за

USE [Test] 
GO 
/****** Object: StoredProcedure [dbo].[tesproc] Script Date: 09/01/2010 13:00:54 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[tesproc] 
    -- Add the parameters for the stored procedure here 
    @a float, @b float, @c float,@d int 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    select Id, Name1,ZipCode,StreetName,StreetNumber,State1,Lat,Lng, (6371 * ACOS(COS((@a/@b)) * COS( (Lat/@b) ) * COS((Lng/@b) - (@c/@b)) + SIN(@a/@b) * SIN( Lat/@b ))) as distance from business_details where (6371 * ACOS(COS((@a/@b)) * COS( (Lat/@b) ) * COS((Lng/@b) - (@c/@b)) + SIN(@a/@b) * SIN( Lat/@b )))<@d 
END 

Если я выполнить эту хранимую процедуру в SQL сервере его прекрасно работать с этим следующим вызовом

exec dbo.tesproc 12.9216667 ,57.2958,77.591667,1 
+1

Вы видели http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson07.aspx? Простой поиск Google для «Вызов сохраненной процедуры с ADO.net» предоставит вам всю необходимую информацию! – InSane

ответ

4
using (SqlConnection conn = new SqlConnection("connection string goes here")) 
using (SqlCommand comm = new SqlCommand("tesproc", conn)) 
{ 
    comm.CommandType = CommandType.StoredProcedure; 
    comm.Parameters.AddWithValue("@a", 0.1); 
    // etc 

    conn.Open(); 

    using (SqlDataReader reader = comm.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      int id = reader.GetInt32(reader.GetOrdinal("id")); 
      // etc 
     } 
    } 
} 

Есть много комплексных образцов в Интернете:

http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson04.aspx

Мой пример кода просто демонстрирует, что это может выглядеть - это было написано прямо в редакторе, так может не работать свой.

+0

Благодарим за сообщение – mahesh

Смежные вопросы