Stored Procedure
Publicado por Patricia (2 intervenciones) el 26/08/2000 00:00:00
Alguien sabe como ejecutar un stored procedure almacenado en la base de datos Oracle desde visual C. La conedxión que utilizo es odbc.
Valora esta pregunta


0
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
int main() {
// Establecer la conexión ODBC a la base de datos Oracle
SQLHENV env;
SQLHDBC dbc;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
SQLDriverConnect(dbc, NULL, (SQLCHAR*)"DSN=nombre_fuente_datos;UID=usuario;PWD=contraseña", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// Preparar la sentencia SQL para ejecutar el stored procedure
SQLHSTMT stmt;
SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
SQLPrepare(stmt, (SQLCHAR*)"EXECUTE nombre_stored_procedure(?, ?)", SQL_NTS);
// Vincular los parámetros necesarios al stored procedure
int parametro1 = 123;
SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, ¶metro1, 0, NULL);
char parametro2[50] = "ejemplo";
SQLBindParameter(stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, sizeof(parametro2), 0, parametro2, sizeof(parametro2), NULL);
// Ejecutar la sentencia SQL
SQLExecute(stmt);
// Recuperar los resultados, si los hay
// ...
// Cerrar la conexión a la base de datos
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}