标签: oracle-pro-c

适用于SIGSEGV/SIGABRT和朋友的Oracle Pro*C/OCI安装处理程序 - 为什么以及如何禁用?

当使用Pro*C(Oracle for C-Code的嵌入式SQL预处理器)或OCI时,我注意到connect/init例程安装了一些信号处理程序.

这意味着在之前

EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbspec ;
Run Code Online (Sandbox Code Playgroud)

或者a

OCIEnvNlsCreate()
Run Code Online (Sandbox Code Playgroud)

我可以验证,例如这些信号有以下处理程序:

No              NAME                Pointer   SA_SIGINFO   SIG_DFL   SIG_IGN
?????????????????????????????????????????????????????????????????????????????
 1            SIGHUP                  (nil)        false      true     false
 2            SIGINT                  (nil)        false      true     false
 3           SIGQUIT                  (nil)        false      true     false
 4            SIGILL                  (nil)        false      true     false
 5           SIGTRAP                  (nil)        false      true     false
 6           SIGABRT                  (nil)        false      true     false
 7            SIGBUS                  (nil)        false      true     false
 8            SIGFPE                  (nil)        false      true     false
 9           SIGKILL                  (nil)        false      true     false
10           SIGUSR1 …
Run Code Online (Sandbox Code Playgroud)

c oracle signals oracle-call-interface oracle-pro-c

10
推荐指数
1
解决办法
2431
查看次数

重建预编译头

我正在尝试将MFC与ProC一起使用.
Functions.pc是我使用ProC语法连接数据库的地方.所以我'Functions.h'在对话框模型中包含了我要调用函数的位置'Funtions.h'.现在我收到了这个错误.

    Add directive to 'stdafx.h' or rebuild precompiled header
Run Code Online (Sandbox Code Playgroud)

我明白,我需要包括'stdafx.h''Functions.h'它的工作.我做到了.它可以编译,但是当我尝试运行程序时,它将无法识别由'Functions.cpp'创建的ProC创建的语法.我真的不明白如何重建预编译的头,因为我不懂代码'stdafx.h'.

c++ visual-studio oracle-pro-c

9
推荐指数
2
解决办法
2万
查看次数

Pro-C中的SQL查询失败,错误:02115

我得到了一些奇怪的Pro-C程序行为,如下所示:

#define BGHCPY_TO_ORA(dest, source) \
{ \
(void)strcpy((void*)(dest).arr, (void*)(source)); \
(dest).len = strlen((const char *)(dest).arr); \
}
#define BGHCPY_FROM_ORA(dest, source) \
{ \
(void)memcpy((void*)(dest), (void*)(source).arr, (size_t)(source).len); \
(dest)[(source).len] = '\0'; \
} 

long fnSQLMarkProcessed (char *pszRowId, char *pszMarker)
{
  BGHCPY_TO_ORA (O_rowid_stack,    pszRowId);
  BGHCPY_TO_ORA (O_cust_processed, pszMarker);

  EXEC SQL
       UPDATE  document_all
          SET  processed_by_bgh = :O_cust_processed
        WHERE  rowid = :O_rowid_stack;

  return (sqlca.sqlcode);
}
Run Code Online (Sandbox Code Playgroud)

传递给上面函数的输入参数值是

pszRowId = [AAAF1lAAIAABOoRAAB], pszMarker=X
Run Code Online (Sandbox Code Playgroud)

查询返回错误代码:02115,并显示以下消息:

SQL Error:02115 Code interpretation problem -- check COMMON_NAME usage
Run Code Online (Sandbox Code Playgroud)

我使用Oracle作为后端数据库.

任何人都可以向我提供有关此查询失败的可能原因的信息吗?

任何帮助都非常感谢.

PRO-C编译期间使用的标志定义如下:

------/u01/app/oracle/product/8.1.6/ORACLE_HOME/bin/proc …
Run Code Online (Sandbox Code Playgroud)

c sql embedded-sql oracle-pro-c

9
推荐指数
1
解决办法
504
查看次数

ORACLE 10.2 Pro*C预编译器没有读取头文件

我正在使用Oracle 10.2和AIX 5.2预编译包含Pro*C代码的C程序

Oracle预编译器读取$ORACLE_HOME/precomp/admin/pcscfg.cfg file包含sys_include变量定义(设置为/usr/include)的内容.

Pro*C编译器抱怨它不知道size_t类型是什么,并且使用该size_t类型的Oracle头文件报告错误.

这是在sqlcpr.h文件上报告的示例错误:

extern void sqlglm( char*, size_t*, size_t* );
...........................1
PCC-S-02201, Encountered the symbol "size_t" when expecting one of the following
Run Code Online (Sandbox Code Playgroud)

size_tstdio.h/usr/include目录的头文件中定义.我包括stdio.h我的头example.pc文件之前包括我的sqlcpr.h头.

我发出proc命令如下:

proc iname=example parse=full
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

oracle oracle-pro-c

7
推荐指数
1
解决办法
2万
查看次数

这个声明来自哪里:main _2a((argc,argv),int argc,char*argv [])

我正在将HP-Unix下的大量Oracle Pro*C代码迁移到Linux环境中.

在程序中只定义了这样一个主要方法:

main _2a((argc,argv), int argc, char * argv[])
{
...
}
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这样的装饰 - 并且没有找到谷歌的任何东西.无论如何,它的工作原理和我所看到的用作主要功能.

任何人都能说出这个吗?

编辑:好提示 - 有一个宏定义:

 # define _2a(list,a1,a2)                 list a1;a2;
Run Code Online (Sandbox Code Playgroud)

仍然没有明确的观点(对我来说..)

c oracle-pro-c

6
推荐指数
2
解决办法
318
查看次数

什么是pro*c?

这有用吗?我们如何从数据库中访问数据?

c oracle oracle-pro-c

5
推荐指数
2
解决办法
8303
查看次数

SQL:SQL查询的准备失败.但是在手动完成时执行

我收到一个错误,在我准备查询时可以看到如下:

SQL-ERR:Preparation of INSERT Query Failed: Ora-Err: -1756 ORA-01756: 
quoted string not properly terminated
Run Code Online (Sandbox Code Playgroud)

查询如下:

EXEC SQL declare INSDTA STATEMENT;
EXEC SQL PREPARE INSDTA FROM :stmt;
if(sqlca.sqlcode < 0)
{
    DEBUG_LOG("SQL-ERR:Preparation of INSERT Query Failed: Ora-Err: %d %s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc);
    DEBUG_LOG("The Query is: %s\n", insertQuery);
    return PREPARATION_FAILURE;
}
Run Code Online (Sandbox Code Playgroud)

而日志文件中的查询是:

INSERT INTO TABLENAME
VALUES (
    '00000001',
    '00004467',
    '0',
    'R56565',
    '03404395',
    '20110601',
    '999',
    '87685785',
    '2017-01-10-23.05.26.000000',
    'KRMAR',
    'KRMAR',
    '77898878',
    '03',
    '00000001',
    'U',
    '01',
    '1',
    '87685785',
    'R56565',
    '89878988',
    'cde',
    'Andr\351',
    'andre.rae@abc.com',
    '01192966',
    'HGJF',
    '00000000', …
Run Code Online (Sandbox Code Playgroud)

sql oracle-pro-c

5
推荐指数
1
解决办法
298
查看次数

Pro*C 中的 SQLCA.SQLERRD 主机数组

正如我们在许多文档中所知道的那样,主机数组的第三个元素SQLCA.SQLERRDiesqlca.sqlerrd[2]包含迄今为止由 SQL 语句处理的累积行数(就 Pro*C 而言)。

没有人知道的其他元素,即的意义[0][1]以及它们意味着什么?

oracle oracle-pro-c

4
推荐指数
1
解决办法
7120
查看次数

如何使Pro * C适应#warning指令?

当我尝试预编译包含#warning指令的* .pc文件时,出现以下错误:

PCC-S-02014,在预期以下情况之一时遇到符号“警告”:(bla bla bla)。

如果Pro * C不知道如何处理,我可以说服他们忽略它吗?我无法删除该#warning指令,因为它在无法更改且必须包含的头文件中使用。

c oracle oracle-pro-c

3
推荐指数
1
解决办法
5788
查看次数

Oracle 的 pro*C 编译器和 gnu C(__builtin_va_list、__attribute__ 等)

我正在使用 pro C 编译数据库库,它将 .ppc 库文件转换为 gcc 可以使用的 .c 文件。但是,我在 pro C 中遇到很多错误,如下所示

   PCC-S-02201, Encountered the symbol
"__ attribute__ " when expecting one of
the `following`

... 

   , Encountered the symbol
"__builtin_va_list" when expecting one of
the `following`
Run Code Online (Sandbox Code Playgroud)

缺失的符号来自一系列标准包含,例如 stdio.h 和 stdlib.h。我该如何解决这个问题?

我正在编译的库来自我们现在正在升级的旧Solaris系统(到新的Solaris 10系统),并且头文件似乎没有使用这些符号。例如较新的 .h 文件有

typedef __builtin_va_list va_list
Run Code Online (Sandbox Code Playgroud)

而旧的 .h 文件有

typedef void* va_list
Run Code Online (Sandbox Code Playgroud)

像这样的事情有很多,所以我不愿意用 typedef 手动修复所有这些问题

c oracle gnu compilation oracle-pro-c

3
推荐指数
1
解决办法
4401
查看次数