2014-06-24 8 views
-1
에게

을 선택, 우선 쿼리를 삽입 않고합니다 :방법은 다음과 같이 SELECT 문이 다음 삽입을 포함하는 저장 프로 시저를 실행하고 내 저장 프로 시저에서 모두 문

 INSERT() 

     SELECT * FROM preferences WHERE [email protected] 

ADO.NET에서, 내가 사용한 - DataReader를을 이 절차를 실행합니다.

그러나 SELECT 값을 반환하지 않으며 INSERT 구문도 실행하지 않습니다.

아무도 나에게 무엇이 잘못되었는지 제안 할 수 있습니까 ???

CODE :

   strSPROC = "sproc_SaveAndRetrieve" 
      Using cmd As New Data.SqlClient.SqlCommand 
       cmd.CommandText = strSPROC 
       cmd.CommandType = Data.CommandType.StoredProcedure 
       cmd.Parameters.Clear() 
       cmd.Parameters.AddWithValue("@tvp", CreateDatatableFromCollection(s, isValueOn)) 
       cmd.Parameters.AddWithValue("@GroupID", syGroupID) 

       Using myReader As SqlDataReader = DBManager.GetDataReader(cmd) 
        If myReader.HasRows Then 
         NotFoundRecords= New List(Of String) 
         While myReader.Read() 
          NotFoundRecords.Add(DataHelper.GetString(myReader, "Student")) 
         End While 
        End If 

        Return NotFoundRecords 
        myReader.Close() 
       End Using 
      End Using 

수동으로 SQL 서버에서 실행하는 동안

절차가 파일을 작동하고 감사합니다.

+0

보여주십시오 코드와 같은 INT

While myReader.Read() NotFoundRecords.Add(DataHelper.GetString(myReader, "Student")) End While 

내가 기대하는 뭔가를 반환해야 함을
매우 의심스러운입니다. ExecuteReader는 StoredProcedure를 실행하고 마지막 SELECT 문에 의해 생성 된 결과 집합을 반환해야합니다. – Steve

+0

질문에 세부 정보가 추가되었습니다. – user3711357

답변

1

삽입을 실행하지 않는 경우 오류를 catch해야합니다.

try 
{ 
    ... 
} 
catch (SqlException ex) 
{ 
    Debug.WriteLine(ex.message); 
} 
finally 
{ 
    // close connection 
} 

select는 NextResultSet에 있어야하지만 삽입을 먼저 수정해야합니다.

DataHelper.GetString을 표시하지 않습니다.
삽입은 문자열이 아닌 정수를 반환합니다.
아무런 예외도 발생하지 않는다는 진술을 믿지 않습니다.
.NET에서 SQL 오류가보고됩니다.
삽입이 0 행에 영향을 미쳤지 만 0을 얻어야합니다.
실패하면 예외가 발생합니다.
.NET에서 SSMS에 행을 삽입하는 경우 (오류를 발생시키지 않음) .NET에서 동일한 매개 변수를 실행하지 않습니다.

DataHelper.GetString (myReader, "Student"))의 기능은 무엇입니까?
NotFoundRecords는 문자열의 목록 일뿐입니다.

이 먼저 문을 그물 응용 프로그램에서 사용이

myReader.Read() 
int rowInserted = myReader.GetInt32() 
myReader.NextResultSet() 
while myReader.Read() 
    string sss = myReader.GetString() 
End While 
myReader.Close() 
+0

왜 투표가 실패 했습니까? 인서트는 실행되지 않습니다. 그 진술은 실패하고있다. 실패의 원인을 알아 내려면 어떻게해야할까요? – Paparazzi

+0

프로 시저가 SQL Server에서 파일을 작업하며 .NET에서는 예외가 없습니다. 나는 세부 사항을 가진 질문을 새롭게했다. – user3711357

+0

.NET에서 오류가 발생하면 .NET에서 오류가 발생합니다. 프로 시저가 자동으로 실패하지 않습니다. 내 대답에 나와있는 것처럼 시도 잡기를 시도 했습니까? 연결을 열지 않고 연결을 할당하는 위치가 표시되지 않습니다. 너 다운 투표 했니? – Paparazzi