티스토리 뷰

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시간 날린거 생각하면.....
 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함