gpt4 book ai didi

c++ - 这个 Pro*C 模式是一种最佳实践,还是有记录?

转载 作者:行者123 更新时间:2023-11-30 00:56:51 24 4
gpt4 key购买 nike

我有一些遗留的 Pro*C 代码使用下面的结构。
这种模式在在线论坛上找到,但在 Oracle 文档中没有。
特别是 Google can't find any doc about "sqhsts" on the Oracle website

这种模式是否记录在某处?
它被认为是一种良好的编程习惯吗?

/* 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;

(从 here 复制的代码,但与我的相似)

最佳答案

Pro*C 从类似

的语句创建低级 C
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;

它为您声明的每个数据项创建类似 OCI 的描述符。其他语句 (EXEC SQL ...;) 在其中将 sql 与这些绑定(bind)变量一起嵌入,然后使用声明部分中编码的内容转换为较低级别的一系列调用。 Pro*C 很旧。 25 多年前,我参与了 Pro*C 的第一个测试版。 ...不推荐。

Pro*C 预编译生成的代码在启用警告的现代编译器编译时并不总是完美。它也不意味着可读。如果你想学习OCI编程,你可以得到它是怎么回事。也不推荐,除非您想执行一些特殊任务。

示例任务:OCI 用于为 Oracle 创建外部 C/C++ 库。它几乎可以让您在细粒度级别上处理几乎所有您想在 Oracle 中执行的操作。从这里开始:

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

关于c++ - 这个 Pro*C 模式是一种最佳实践,还是有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com