Question

J'ai un certain héritage Pro * code C en utilisant le type de constructions ci-dessous.
Ce genre de modèle se trouve sur les forums en ligne, mais rien dans la documentation Oracle.
En particulier, Google ne trouve aucun document sur les « sqhsts » sur Oracle site .

Est-ce modèle documenté quelque part?
Est-il considéré comme une bonne pratique de programmation?

/* cud (compilation unit data) array */
static const short sqlcud0[] =
{10,4130,832,0,0,
5,0,0,1,0,0,27,23,0,0,4,4,0,1,0,1,97,0,0,1,97,0,0,1,97,0,0,1,10,0,0,
36,0,0,2,30,0,4,25,0,0,1,0,0,1,0,2,97,0,0,
};

/* EXEC SQL CONNECT :user IDENTIFIED BY :pwd USING :url; */ 

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )10;
sqlstm.offset = (unsigned int )5;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)user;
sqlstm.sqhstl[0] = (unsigned int )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)pwd;
sqlstm.sqhstl[1] = (unsigned int )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)url;

(code copié à partir de mais similaires à la mienne)

Était-ce utile?

La solution

Pro * C crée à faible niveau C à partir des déclarations comme

EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;

Ce qui crée l'OCI comme descripteurs de chaque élément de données que vous déclarez. D'autres déclarations (EXEC SQL ...;) où vous intégrez sql avec les variables liées sont ensuite traduites en une série de niveau inférieur d'appels à l'aide de ce qui a été codé dans la section DECLARE. Pro * C est vieux. J'ai travaillé sur la première version bêta de Pro * C il y a 25 ans. ... pas recommandé.

Le code généré par Pro * C pré-compilation ne se font pas toujours parfaitement lorsqu'il est compilé par les compilateurs modernes avec des avertissements activés. Il ne vise pas aussi être lisible. Si vous voulez apprendre la programmation OCI, vous pouvez obtenir ce qui se passe. Pas vraiment recommandé, que ce soit, à moins que vous voulez faire quelques tâches spéciales.

Exemple tâche: OCI est utilisé pour créer des bibliothèques externes C / C ++ pour Oracle. Il à peu près vous permet de travailler avec presque tout ce que vous voulez faire dans l'oracle, à un niveau de grain fin. Commencez ici:

http://www.oracle.com/technetwork/database/features/oci/index .html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top