Precompilers, OCI & OCCI :: Unable To Compile Pro C Code With Oracle 11g In Windows Env
Jul 15, 2010
I am trying to compile a .pc file. I am working with Oracle 11gR1 and windows env. I am able to create .c file from .pc file. I am able to produce .o file from .obj file. But i am not able to link it and produce .exe. My installation does not contain / precomp /demo folder.
Linux 2.4.21-37.ELsmp #1 SMP Wed Sep 7 13:28:55 EDT 2005 i686 i686 i386 GNU/Linux...As you'll see I do not understand anything about PRO*C. I need to compile this PRO*C code to use it to retrieve DBMS PIPES being sent.
I'm trying to compile it using the following command: gcc -o IAPIPE IAPIPE.c
The code - file IAPIPE.c #include <stdio.h> #include <string.h>
EXEC SQL BEGIN DECLARE SECTION; VARCHAR username[20]; int status; int msg_length; char retval[2000]; EXEC SQL END DECLARE SECTION; [code]....
I've a Pro*C program which fills various large tables (in different schemas). I am executing the procedures which fill the tables as PThreads (since I want them to run in parallel for performance reasons). When I execute all threads sequentially (pthread_join(last_thread) before every pthread_create(next_thread)) everything works fine. But when a run the threads in parallel (as they should run), I am getting: "ORA-24550: signal received: si_signo=11si_errno=0si_code=1si_addr=0x18 Aborted"
Above query runs perfectly on SQL prompt.Same query, when being run in a Pro*C program gives compilation error-:
Error at specified line:
,( SELECT D.V3 FROM TABLE2 D WHERE D.V3 = C.V4) .............................1 PCC-S-02201, Encountered the symbol "D" when expecting one of the following: ( ) * + - / . @ | at, day, hour, minute, month, second, year,
What are the possbile causes of error. I am using Oracle 10g on Unix.
i HAVE THE FOLLOWING CODE WRITTEN IN A *.pc FILE. I am trying to loop to fetch data from cursor. But the code exist after it fetches the first record. Let me know what is it the right way to fetch data from cursor?
EXEC SQL BEGIN DECLARE SECTION;
char str[64];
EXEC SQL END DECLARE SECTION;
/*cursor declarations*/ EXEC SQL DECLARE Get_SQLText_Cursor CURSOR FOR
I am trying to compile a .pc file with the make file which I created. But when I try to give make command I am getting following error
>make testfile cc -o testfile testfile.c "testfile.c", line 117: warning: no explicit type given "testfile.c", line 119: warning: no explicit type given "testfile.c", line 121: warning: no explicit type given "testfile.c", line 122: warning: no explicit type given "testfile.c", line 123: warning: no explicit type given Undefined first referenced symbol in file sqlcxt testfile.o ld: fatal: Symbol referencing errors. No output written to testfile
I have written make files that compile .pc files in unix. This was for several projects that use an oralib source code directory.Just running proc on one target .pc file works fine on unix. I am trying to use proc - Oracle 10.2.0 - in windows and I keep getting:
Quote:unable to open include file #include <stdio.h> and other C library headers.
I am doing all development under cygwin, this way I can write a makefile just like under unix instead of using nmake.All C library headers are in /usr/include When I run proc on Solaris as that:
proc program.pc No problems, and I do get program.c.
However in windows I get the previous error message. I have tried to do proc include=/user/include program.pc and proc include=/user/include parse=full program.pc but I still get the same error message.
Recently, i had to restore /usr/lib folder (because some files crashes) to a previous point. This restore point is previous to Oracle client installation. Well, now, when i try to compile my Pro*C samples:
I want to insert XML data into my ( Oracle 11G Release 1 ) XMLType table using OCCI. I'm getting
ORA-01461: can bind a LONG value only for insert into a LONG column
My XML data size is around 1.5 to 2MB. I have also tried using setMaxParamSize before calling the setString method. But, still I'm getting the same exception.
My OS is Linux and I installed Oracle 10.2. Everything is fine.I can use sqlplus, exp, imp etc with no problem.Now I have created another linux user test in /home/test. I unzipped basic-10.2xxxxxx.zip (/home/test/instantclient_10_2) and exported LD_LIBRARY_PATH.I guess I have installed instant client in this way.
My testOra.cpp:
#include <occi.h> int main() { return 0; }
This test.cpp would not compile. It cannot find occi.
I am using the following piece of code to close the connection to the oracle database, I am using the context created in the previous step and passing it to the below code(connection.context)to release the connection.
if (connection.context == 0 || connection.ca == 0) return true; // Multithreading: get the communication area of the context struct sqlca & sqlca = *(connection.ca); EXEC SQL BEGIN DECLARE SECTION;
[code].....
When the above code is executed there is no exception thrown but the connection is not getting close. I am using the V$SESSION system views to monitor the connection created.
I there anything I am missing in my code for the connection closing to fail.
I looked for a Precompiler for Fortran, could not find one. Does a precompiler for Fortran exist for Oracle 10i ? If no, would the precompiler for prior versions of Oracle work with Version 10i ?
I'm a beginner in the PRO*C and I have this issue/I have to maintain a multithreaded C++ PRO*C application and has the following structure
1) Application runs waiting for requirements 2) When detects a requirement it creates a Thread to work 3) The thread connects to Oracle with a EXEC SQL CONNECT :uid IDENTIFIED BY :pwd; instruction 4) Calls some anonymous calls to execute a stored procedure
EXEC SQL EXECUTE BEGIN commit; :Status:=stored_procedure(:param1, :param2); commit; END; END-EXEC;
5) If anything went wrong then issues a EXEC SQL ROLLBACK WORK RELEASE; then reconnects and the thread die 6) If everything was OK then the thread dies, but never called a EXEC SQL COMMIT WORK RELEASE; to disconnect from Oracle
I don't know why never the application disconnects from Oracle, maybe is for performance. Sometimes the application crashes and I believe that maybe the error is for never freeing the connections, the PROC compile line is this
Which is the way to implement the connections?, connect and disconnect when done? or just keep the connection alive? Which way has better performance, connect and disconnect or just keep the opened connection?
We are considering upgrading our current system from Oracle 9i to 11g. The current operating system is SUSE Enterprise 9.
The 11g requirements say an update to SUSE Enterprise 10 is required to support the Oracle 11g installation.
Will I need to recompile my existing application programs which use pro C precompiler to create code that accesses the Oracle database when I upgrade the operating system and database?
I am running a job that is using Pro C code. I am running it on an Oracle 10g database with an Oracle 9 client on a UNIX platform. The code compiled fine. The job runs fine sometimes but other times it fails with a Segmentation Fault error.
I have the same job running in an Oracle 8i environment with no problems.
I was asked to find the C struct that Oracle uses to create a logFile, or at least the C struct of a reg in that file,I've read a lot of material from many "know-at-all" who don't know anything.
I want write a program using oci to login into oracle database.Advance security option for the oracle server is set to kerberos authentication. Is it possible to login to the oracle database through olog() function.
Initial ticket is required in kerberos authentication. So is it also needed durinfg the login from my programme.
connecting to an oracle db with the instant client 11.01.06. I can connect to the db via other tools like sqldbx or SqlTools 1.5 which are also using oci. So now I tried it with c++ using Visual Studio 2005 SP1.
where tnsservice-name is the name I specified in the tnsnams.ora, and which I used with the other tools working fine -> same error.My username is only 4 long, so I thought it might have something to do with the string. So I tried:
now it returned the error "TNS:connect descriptor too long". Can't have anything to do with the .ora file, since it worked fine for the other tools. Plus it didn't matter if I renamed the .ora file or removed it from the TNS_ADMIN directory..So I searched a little more for a solution and so an example, where the the last argument is missing. So I tried
It returns: "TNS: protocol Adapter error" which I somehow can understand, since the adapter doesn't know to wich db to connect.I also tried to use some frameworks like soci or otl but was never able to compile them... (link errors, unknown data types etc...).
my Multithread-Program hangs in an oracle library while passing a prepare statement (also if i try an EXEC SQL SELECT statement...). Something seems to be wrong in the Program, but i cant's find the Error.The Program is build with:
Previously we had 32 bit C++. Now, we have migrated it to 64 bit. And our C++ programs interact with Oracle 10g DB.Our C++ program was working fine with 32 bit. But once after we migrate to 64 bit we are facing problem with one program which does FETCH(EXEC SQL FETCH SUBP1 INTO :new TabRec;) from Oracle DB. ie, We exit from a for loop in the C++ program when we get NOT FOUND(sqlca.sqlcode=1403) on executing the FETCH statement.
The sqlcode generated for NOT FOUND scenario is 1403. But, once after moving to 64 bit C++, we do not see the sqlcode 1403 instead we are seeing a different code 7124089117159473.
As the sqlcode is not 1403, our program does not exit from the for loop and goes on an infinite loop.Am I missing anything that makes me to not get the exact sqlcode?
Now from Pro*C function I want to pass a similar array of structure to this procedure and return it via the out parameter of the procedure back to Pro*C. How do I do it?
I am using the attached program but its giving me compiler error as follows..
Error at line 31, column 1 in file sample.pc proc_modify_tdefs (:in_tdefs,:out_tdefs); 1 PLS-S-00306, wrong number or types of arguments in call to 'PROC_MODIFY_TDEFS' Error at line 31, column 1 in file sample.pc proc_modify_tdefs (:in_tdefs,:out_tdefs);
I would like to create a trigger that will execute a stored procedure when a package/function/procedure is compiled. I tried creating an update trigger on user_objects, but it statues aI cannot create that trigger tyoe on views.
We have a .NET application on windows server 2008 32bit using the stored procedures on an Oracle 10g environment. We are trying to deploy the .NET application onto a 64bit x86 Windows server 2008.
We face an error trying to install the x64 version of the Oracle 10g client on windows 2008. The error we get is Problem signature:
Problem Event Name: APPCRASH Application Name: javaw.exe
Is the x64 version of the Oracle 10g client certified for Windows 2008? Has anyone successfully installed the 64bit version of the oracle client on win2008?
We have a workaround in place with 32 bit version of the client running with the 32 bit version of the .NET application on x64 win2008. However to maximize the infrastructure we need to use the 64 bit version or we would have to turn to MSSQL Server .
Suppose, there is a package p1 with proc A, Proc B and Func C.Now when any of the package proc or func gets invoked from a stored proc G then a common code which reads the cols of table xyz should be executed. How to do that?