>데이터 베이스 >Oracle >c는 Oracle 저장 프로시저를 호출합니다.

c는 Oracle 저장 프로시저를 호출합니다.

王林
王林원래의
2023-05-13 15:27:07582검색

소프트웨어 개발에서 저장 프로시저를 호출하는 것은 일반적인 데이터베이스 작업 중 하나입니다. Oracle은 일반적으로 사용되는 관계형 데이터베이스 관리 시스템이므로 저장 프로시저를 호출할 때 프로세스를 완료하려면 제공되는 인터페이스를 사용해야 합니다. 이 문서에서는 C 언어를 사용하여 Oracle 저장 프로시저를 호출하는 방법을 소개합니다.

1. Oracle 저장 프로시저 소개

Oracle 저장 프로시저는 특정 작업이나 작업을 수행하는 데 사용되는 미리 정의된 코드 블록입니다. 데이터베이스에 저장 프로시저를 생성한 후 이를 프로그램에서 호출하고 매개변수와 반환 값을 전달할 수 있습니다. 이것의 장점은 저장 프로시저를 재사용할 수 있는 동시에 프로그램의 효율성과 보안도 향상된다는 것입니다.

2. C 언어를 사용하여 Oracle 저장 프로시저 호출

C 언어를 사용하여 Oracle 저장 프로시저를 호출하기 전에 Oracle 데이터베이스와 통신할 수 있도록 Oracle ODBC 드라이버가 설치되어 있는지 확인해야 합니다. 다음으로, 다음 단계를 통해 C 언어를 사용하여 Oracle 저장 프로시저를 호출하는 방법을 보여드리겠습니다.

1. Oracle 데이터베이스에 연결

Oracle ODBC 드라이버를 사용하기 전에 프로그램에 대한 ODBC 데이터 소스를 생성해야 합니다. ODBC 데이터 소스는 Windows 운영체제의 "제어판"에 있는 "데이터 소스(ODBC)"를 통해 생성할 수 있습니다. 아래와 같이 프로그램에서 데이터 소스 이름을 지정할 수도 있습니다.

SQLRETURN rc;
SQLHDBC hdbc;
SQLAllocHandle(SQL_HANDLE_DBC, SQL_NULL_HANDLE, &hdbc);
rc = SQLConnect(hdbc, (SQLCHAR*)datasource_name, SQL_NTS, (SQLCHAR*)uid, SQL_NTS, (SQLCHAR*)pwd, SQL_NTS);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
    printf("connect to oracle failed
");
    return;
}

2. SQL 문 준비

저장 프로시저를 호출하기 전에 실행을 위해 데이터베이스로 전달할 수 있도록 SQL 문을 준비해야 합니다. . 다음 예에서는 "get_employee"라는 저장 프로시저를 실행하는 간단한 SQL 문을 준비하는 방법을 보여줍니다.

SQLHSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLCHAR* sql = (SQLCHAR*)"{call get_employee(?, ?, ?, ?)}";
SQLINTEGER param1 = 10, param2 = 3;
SQLDOUBLE param3 = 0.0;
SQLCHAR param4[20];
rc = SQLPrepare(hstmt, sql, SQL_NTS);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
    printf("prepare sql failed
");
    return;
}
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &param1, 0, NULL);
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &param2, 0, NULL);
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_OUTPUT, SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &param3, 0, NULL);
rc = SQLBindParameter(hstmt, 4, SQL_PARAM_OUTPUT, SQL_C_CHAR, SQL_VARCHAR, 20, 0, param4, sizeof(param4), NULL);

위 예에서 SQL 문은 "SQLPrepare" 함수와 "SQLBindParameter" 함수를 사용하여 매개 변수를 바인딩합니다. 명령문의 "?" 저장 프로시저의 첫 번째와 두 번째 매개변수는 각각 입력 매개변수이고, 세 번째와 네 번째 매개변수는 각각 출력 매개변수입니다.

3. SQL 문 실행

SQL 문이 준비되고 매개변수가 바인딩된 후 "SQLExecute" 함수를 사용하여 문을 실행할 수 있습니다. 저장 프로시저가 실행되면 출력 매개변수의 값을 검색할 수 있는 커서가 자동으로 생성됩니다. 다음은 SQL 문을 실행하는 예입니다.

rc = SQLExecute(hstmt);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
    printf("execute sql failed
");
    return;
}
rc = SQLFetch(hstmt);
if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO && rc != SQL_NO_DATA) {
    printf("fetch data failed
");
    return;
}

위 예에서는 "SQLExecute" 함수를 통해 SQL 문을 실행하고 "SQLFetch" 함수에서 출력 매개변수의 값을 가져옵니다.

4. Oracle 데이터베이스 연결 끊기

저장 프로시저에 대한 호출을 완료한 후 할당된 리소스를 해제하려면 "SQLDisconnect" 함수를 사용하여 Oracle 데이터베이스 연결을 끊어야 합니다. 다음 예에서는 Oracle 데이터베이스에서 연결을 끊는 방법을 보여줍니다.

SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

위 단계를 통해 C 언어를 사용하여 Oracle 저장 프로시저를 호출할 수 있습니다.

3. 요약

이 기사에서는 C 언어를 사용하여 Oracle 저장 프로시저를 호출하는 방법을 소개합니다. 여기에는 주로 Oracle 데이터베이스에 연결하고, SQL 문을 준비하고, SQL 문을 실행하고, Oracle 데이터베이스에서 연결을 끊는 단계가 포함됩니다. 실제 개발에서는 특정 요구에 따라 수정 및 조정이 이루어질 수 있습니다. 이 기사의 소개를 통해 여러분은 C 언어를 사용하여 Oracle 저장 프로시저를 호출하는 방법에 대해 어느 정도 이해하고 이해하게 되었다고 믿습니다.

위 내용은 c는 Oracle 저장 프로시저를 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.