标签: oracle-pro-c

Oracle Pro * C预编译器错误PCC-S-02201

转换为使用Oracle Pro * C的现有程序在预编译时会引起问题。它从文件系统读取一个文件,对其进行解析,然后写入几个数据库表。

有一个具有以下定义的方法:

void parse_line(inline)
char *inline;
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)

当我尝试做到这一点时,我看到:

Syntax error at line 162, column 13, file myfile.cp:
Error at line 162, column 13 in file myfile.cp
char *inline;
............1
PCC-S-02201, Encountered the symbol ";" when expecting one of the following:

   ( * const, volatile, an identifier,
Run Code Online (Sandbox Code Playgroud)

就我所知,此函数声明在语法上是正确的,因此我必须假定由于其他问题而出现此预编译器错误。

除了将整个程序粘贴在这里之外,有人对我可以开始寻找的一些好地方有任何建议吗?

我的pcscfg.cfg看起来像这样:

sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/x86_64-redhat-linux/3.2.3/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.1/include,/usr/lib64/gcc/x86_64-suse-linux/4.1.2/include,/usr/lib64/gcc/x86_64-suse-linux/4.3/include)
ltype=short
define=__x86_64__
Run Code Online (Sandbox Code Playgroud)

c++ oracle oracle-pro-c

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

登录到Oracle时system()返回-1,errno = 10

一个后EXEC SQL CONNECT user/pass;命令,system("")返回一个-1,并将errno = 10。

我们已将该程序从HP-UX上的Oracle 10g迁移到Red Hat Linux上的Oracle 11g。在HP-UX / Oracle 10g上没有发生这种情况。

#include <errno.h>
#include <dirent.h>
#include <sys/types.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <sys/stat.h>

typedef char vc2[10];
typedef char vc4[20];

EXEC SQL INCLUDE sqlca;

char *oracleid = "user/pass";
char msg[400];
char env[20][200];
#define DEBUG 1
int  status = 1;


int main( argc, argv )
int argc;
char **argv;
{
    int        load_stat;

    EXEC SQL BEGIN DECLARE SECTION;

    EXEC SQL …
Run Code Online (Sandbox Code Playgroud)

c oracle oracle-pro-c

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

sqlcxt()pro c函数有什么用?

我对pro c很新,我没有任何开发pro c程序的实践经验.在调试程序时我遇到了一个函数调用

sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
Run Code Online (Sandbox Code Playgroud)

我在谷歌搜索sqlcxt()函数的帮助,但我没有找到任何资源.一些博客已经提到在预编译程序期间出现的问题,但它们是我没用的.

oracle-pro-c

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

这里不允许使用ORA-00984专栏

我正在使用Pro*C在我的表Registred_Customer中插入值时出现错误"Execute-984 ORA-00984:此处不允许列"

Registred_Customer定义为

CREATE TABLE Registred_Customer (
    Cust_id NUMBER(6) PRIMARY KEY,
    Name VARCHAR2(20) NOT NULL,
    Age NUMBER,
    Sex CHAR,
    Addr VARCHAR2(50),
    Contact NUMBER(10)
);
Run Code Online (Sandbox Code Playgroud)

使用pro*c方法插入值

addCustomer(i, name,age, gender, address,contectNo);
Run Code Online (Sandbox Code Playgroud)

在Pro*C方法中我使用以下代码插入

EXEC SQL INSERT INTO REGISTRED_CUSTOMER VALUES  
(cust_id, cust_name, age, sex, addr,   contact);
Run Code Online (Sandbox Code Playgroud)

这里的cust_name和addr是char*; 和性是作为int的char rest;

它在使用变量时报告错误,但使用直接值等工作正常 EXEC SQL INSERT INTO REGISTRED_CUSTOMER VALUES (10, 'Pankaj', 23, 'M', 'asdfs', 45875);

我尝试改变几行,但徒劳无功.

提前致谢.

sql oracle insert ora-00984 oracle-pro-c

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

这个Pro*C模式是一种最佳实践,甚至是文档记录?

我有一些遗留的Pro*C代码使用下面的结构.
这种模式可以在在线论坛上找到,但在Oracle文档中没有.
特别是,Google无法在Oracle网站上找到任何关于"sqhsts"的文档.

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

/* 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] = ( …
Run Code Online (Sandbox Code Playgroud)

c++ oracle oracle-pro-c

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

无法在 linux 中编译 Pro*c 代码

我在 C 项目中有一个 pro*C 文件,我正在尝试编译它,但在编译后我没有得到 C 代码。

以下是环境变量:

ORACLE_HOME           = /opt/vgi/oracle/12.1.0.2/client
Run Code Online (Sandbox Code Playgroud)

procTest.pc 文件:

#include <stdio.h>
#include <string.h>
#include <sqlda.h>
#include <sqlcpr.h>


EXEC SQL BEGIN DECLARE SECTION;
VARCHAR uid[30];
VARCHAR pwd[30];
EXEC SQL END DECLARE SECTION;

EXEC SQL INCLUDE SQLCA.H;

void main()
{
    strcpy(uid.arr,"SCOTT");
    uid.len =strlen(uid.arr);
    strcpy(pwd.arr,"TIGER");
    pwd.len = strlen(pwd.arr);

    EXEC SQL WHENEVER SQLERROR GOTO errexit;
    EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;

    printf("Connected to Oracle8i using Scott/Tiger\n");

    EXEC SQL COMMIT WORK RELEASE;
    return;

errexit:
    printf("Connection failed");
    return;


} 

/* end …
Run Code Online (Sandbox Code Playgroud)

oracle stored-procedures oracle-pro-c

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

标签 统计

oracle-pro-c ×6

oracle ×5

c++ ×2

c ×1

insert ×1

ora-00984 ×1

sql ×1

stored-procedures ×1