Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Pro*C++: Useless when working with multithreaded C++ applications?

Re: Pro*C++: Useless when working with multithreaded C++ applications?

From: Calvin_Lau <awlau_at_ee.cuhk.hk>
Date: 6 Nov 2001 06:25:08 GMT
Message-ID: <9s7vo4$j4a$1@eng-ser1.erg.cuhk.edu.hk>


Atul Pinge (apinge_at_carl.org) wrote:
: Hello everybody,

: I started coding my server written in C++ on Microsoft Windows
: platform using Pro*C++ embedded sql because I was told that it
: is very easy to code interface for accessing Oracle data.
: And now I'm repenting I did that. I think, I'll need to
: recode everything using OCI after almost 2 months of efforts.
: It's extremely frustrating to work with Pro*C++. I will not
: advice anybody to use Pro*C++ with multithreading unless of
: course somebody already knows answers to the problems I'm
: facing. Here are some problems I am facing at the moment.

: 1. First and the biggest problem is it does not understand
: C++ program structure at all. If you want to write C++ programs
: you need to add code=cpp as preprocessor option. As soon as you
: do that the default option parse=partial has to be added. If
: you do that you preprocessor does not understand variables
: defined outside EXEC SQL DECLARATION SECTION BEGIN and END
: statements. That means that I cannot include private variables
: of the class used as host variables. (Cool!)

: 2. Then Pro*C++ preprocessor after preprocessing creates lots
: of global variables in the file. So we need to put all the
: EXEC SQL statements only in one .cpp file. Because otherwise
: we get compilation errors saying that same global variables
: are defined at multiple places.

: 3. Since every host variable needs to be defined between
: EXEC SQL DECLARATION SECTION BEGIN and END statements you
: cannot even pass host variables as arguments to the functions.

: 4. Sometimes there are ugly work arounds possible. But that
: makes your code look really really ugly. To give an example,
: since you cannot define a argument variable to be used as a
: host variable you can pass in a variable and then copy it
: into a variable defined between EXEC SQL DECLARATION SECTION
: BEGIN and END. Or since you cannot define a private class
: variable as an host variable, define a local variable in
: EXEC SQL DECLARATION SECTION BEGIN and END in EACH method
: and copy the private variable into it.

: 5. Most of the example programs given in Oracle documentation
: are written using C and NOT C++. So they do not address all
: the problems mentioned above at all. Hence the documentation
: is pretty much useless in many cases.

: 6. It's extremely difficult to get any help for the problems.
: I tried to post messages in newsgroups. No answers. Many
: times people just ask me to contact Oracle customer support.
: If I search in Oracle metalinks database, many of the problems
: are reported as bugs. And if they are not, then there are
: really ugly work arounds available which may not even be
: practical to do (For the problem I was facing it was suggested
: that declaration of cursor, opening of cursor and fetching
: should be done in one function or method! What if I cannot
: do that?!!!).

: 7. When I contacted Oracle customer support, all they keep
: saying is upgrade to the next version. In our case, we have
: about 500 customer sites. If we want to upgrade all of these
: sites its quite a project in itself!

: Pro*C++ is the first Oracle product I started using and I must
: say I'm not impressed with it. I'm writing this post hoping
: that somebody still has answers to all these questions otherwise
: they know what kind of problems will they be facing using Pro*C++.
: I wish I had seen an article like this before I stared.

: Atul

--
__________
Calvin_Lau 
email: awlau_at_ee.cuhk.edu.hk
---------------------------
Received on Tue Nov 06 2001 - 00:25:08 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US