pro*c의 db이름은 어디에 설정되어 있을까요?

asdfghjkl의 이미지

pro*c에서 디비 커넥션 소스를 보고 있는데요
아이디 하고 패스워드만 주니 접속이 잘 됩니다.

근데 궁금한게 tnsnames.ora파일에 있는 디비이름이 YONG 이라면
이 YONG을 pro*c중의 어디 한군데에는 이걸 사용한다고 적어 주어야 할 것같은데 그게 소스를 아무리 찾아도 이상하게 없어요. 따로 환경파일이나...다른곳에 저장해두는 곳이 있는지 궁금하네요...

tnsnames.ora 파일

YONG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(Host = 2xx.xx.xx.xxx)
(Port = 1521)
)
)
(CONNECT_DATA = (SID = db2)
)
)

실제사용하고 있는 pro*c 접속루틴

EXEC SQL BEGIN DECLARE SECTION;
varchar Tuserid[20];
varchar Tpasswd[20];
EXEC SQL END DECLARE SECTION;

strcpy( (char *) Tuserid.arr, userid);
Tuserid.len = strlen((char *) Tuserid.arr);

strcpy( (char *) Tpasswd.arr, passwd);
Tpasswd.len = strlen((char *) Tpasswd.arr);

EXEC SQL
CONNECT :Tuserid IDENTIFIED BY :Tpasswd;

kealyung의 이미지

EXEC SQL BEGIN DECLARE SECTION;
        char        dbname[20];
        char        userid[20];
        char        passwd[20];
        sql_context ctx;
    EXEC SQL END DECLARE SECTION;


    strcpy((char*) dbname, szDBName);
    strcpy((char*) userid, szUserName);
    strcpy((char*) passwd, szPassword);

    EXEC SQL CONNECT :userid IDENTIFIED BY :passwd USING :dbname;
asdfghjkl의 이미지

kealyung wrote:
EXEC SQL BEGIN DECLARE SECTION;
        char        dbname[20];
        char        userid[20];
        char        passwd[20];
        sql_context ctx;
    EXEC SQL END DECLARE SECTION;


    strcpy((char*) dbname, szDBName);
    strcpy((char*) userid, szUserName);
    strcpy((char*) passwd, szPassword);

    EXEC SQL CONNECT :userid IDENTIFIED BY :passwd USING :dbname;

답변감사합니다.
USING에 디비이름을 붙여주면 된다는 말씀이시죠...
근데 sql_context ctx; 는 무슨 기능을 하는건가요? 또 궁금하네요

kealyung의 이미지

스레드 쓸때 사용하는 겁니다.
http://www.csee.umbc.edu/help/oracle8/index.htm
여기 보면
PRO*C에 대한 메뉴얼(?)
이 있습니다.
참고하세요..