2017-11-20 14 views
0

정적 변수 (@Location)로 작성된 저장 프로 시저가 있습니다. Im은 저장 프로 시저에 LocationID 매개 변수를 전달하는 C# 응용 프로그램을 만들려고합니다. 매개 변수는 TWICE (Location1 및 Location2)를 전달해야합니다. 지금까지 가지고있는 모든 코드는 다음과 같습니다. 그리고 루프를 어떻게 만들지 모르거나 제대로 작성했는지 모르겠습니다.위치 지정 데이터를 반환하는 SPROC에 매개 변수를 전달 하시겠습니까?

using (Conn) 
    { 
    SqlCommand cmd = new SqlCommand("[dbo].[sp_EXAMPLESPROC]",Conn); 
    cmd.CommandType = CommandType.StoredProcedure; 
    SqlParameter LocationParam = cmd.Parameters.AddWithValu("@LocationID", "1"); 
    LocationParam.SqlDbType = SqlDbType.Structured; 
+0

루프 무엇? 다른 매개 변수를 추가하기 만하면됩니다. – itsme86

+0

루프를해야하는 이유는 SP를 한 번 실행하고 해당 데이터를 앱으로 가져오고 앱이 Location1 데이터를 넣을 파일을 만든 다음 Location2 매개 변수로 다시 실행하기 때문입니다. 다른 파일로 전달됩니다). – Csharpnoob

+0

아니면 반복 할 필요가 없다고 생각합니다. 두 번 호출 할 수 있습니까? 이제 문제는 - 저장 프로 시저의 정적 변수에 매개 변수 값을 전달하는 메서드를 작성하는 방법입니까? – Csharpnoob

답변

0

이의 당신이 StoreLocation()라는 방법으로 코드를 넣어 가정 해 봅시다 작동해야이

cmd.Parameters.Add(@LocationID1", SqlDbType.VarChar).Value = "1"; 
cmd.Parameters.Add(@LocationID2", SqlDbType.VarChar).Value = "2"; 

좋아해요.

다음
private void StoreLocation(string locationId) 
{ 
    using (Conn) 
    { 
     SqlCommand cmd = new SqlCommand("[dbo].[sp_EXAMPLESPROC]",Conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     SqlParameter LocationParam = cmd.Parameters.AddWithValue("@LocationID", locationId); 
     LocationParam.SqlDbType = SqlDbType.Structured; 
     cmd.ExecuteNonQuery(); // Or however your sproc works. 
    } 
} 

그냥 두 번 전화를 걸거나 루프를 사용하거나 당신이 원하는대로 : 당신은 너무 좋아 (? 정말 당신 같은 문자열이됩니다) 'locationId이 매개 변수를`걸리고 것

private void SomeCallerMethod() 
{ 
    // Whatever other code you have. 

    StoreLocation("1"); 
    StoreLocation("2"); 

    // More other code. 
} 
0

저장 프로 시저에 LocationID1LocationID2 매개 변수를 추가 한 다음 이

+0

고마워요! 그러나 SP에는 하나의 선언 된 변수 (@LocationID) 만 있습니다. 이 코드를 두 개의 값을 각각 전달하고 결과가있는 별도의 데이터 테이블을 만들도록이 코드의 형식을 어떻게 지정합니까? 예를 들어 LocationID1을 사용하여 실행하고 해당 데이터를 테이블에 저장 한 다음 다른 테이블을 채우기 위해 LocationID2를 사용하여 다시 실행하려면 SP가 필요합니다. – Csharpnoob