프로그래밍/.NetFramework
ODBC 연결시 저장프로시저에 파라미터를 못넘길때.
쇠주는참이슬
2012. 9. 20. 16:37
ODBC 연결시 저장프로시저에 파라미터를 못넘길때.
Sysbase IQ를 ODBC로 연결해서 테스트해보던중
SqlConnection 에서는 잘 되던 프로시저놈이 OdbcConnection 으로 변경한 후에 파라미터가 넘어가질 않는다.
ERROR [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]프로시저 또는 함수 'USP_USER'에 매개 변수 '@ID'이(가) 필요하지만 제공되지 않았습니다.
기존 SqlConnection 사용시 잘 되던놈이 ODBC로 연결시 파라미터 값을 못넘긴다고 계속 뜬다.
SqlCommand command = new
SqlCommand ("USP_USER", con);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@ID", "AAA"));
con.Open();
SqlDataReader reader = command.ExecuteReader();
디버그를 해서 찍어봐도 odbc command 객체에는 파라미터ID, 값이 모두 들어있는데
왜 ExcuteReader(); 만 실행하면 파라미터값을 받지 못했다고 뜨는지
4시간 날렸다. 도대체 왜 다르게 만들어놓은거야 ㅡ.ㅡ
OdbcCommand command = new OdbcCommand("{call USP_USER (?)}", con);
command.CommandType = CommandType.StoredProcedure;
OdbcParameter param = new OdbcParameter("ID", ID);
command.Parameters.Add(param);
OdbcDataReader reader = command.ExecuteReader();
- 저장프로시저 전체를 대괄호로 감싸고 "{ }" 프로시저명 앞에 call 이란 명령어를 붙여주고.
뒤에 "(?)" 로 파라미터를 보내겠다고 선언해야한다.
보내려는 프로시저에 파라미터가 두개라면 "(?, ?)" 이렇게 해주면 되고.
진심 4시간 날린거 생각하면.....