ʲôÊÇPro*C/C++£¬Ç¶ÈëʽSQL£¬µÚÒ»¸öpro*c³ÌÐò£¬pro*c++,Makefile,ProcÔöɾ¸Ä²é(Ò»)

2014-11-24 12:15:19 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 0

1 ʲôÊÇPro*C/C++

1¡¢Í¨¹ýÔÚ¹ý³Ì±à³ÌÓïÑÔC/C++ÖÐǶÈëSQLÓï¾ä¶ø¿ª·¢³öµÄÓ¦ÓóÌÐò

2¡¢Ê²Ã´ÊÇǶÈëʽSQL

1¡¢ÔÚͨÓñà³ÌÓïÑÔÖÐʹÓõÄSQL³ÆÎªÇ¶ÈëʽSQL

2¡¢ÔÚSQL±ê×¼Öж¨ÒåÁ˺ܶàÖÐÓïÑÔµÄǶÈëʽSQL

3¡¢¸÷¸ö³§É̶ÔǶÈëʽSQLµÄ¾ßÌåʵÏÖ²»Í¬

3¡¢Ê²Ã´ÊÇPro*C/C++

1¡¢ÔÚC/C++ÓïÑÔÖÐǶÈëSQLÓï¾ä¶ø¿ª·¢³öµÄÓ¦ÓóÌÐò¡£

2¡¢Ä¿µÄ£ºÊ¹c/c++ÕâÖÖЧÂÊÓïÑÔ³ÆÎª·ÃÎÊÊý¾Ý¿âµÄ¹¤¾ß¡£

4¡¢Ç¶ÈëʽSQLµÄÔØÌåÊÇËÞÖ÷ÓïÑÔ

ËÞÖ÷ÓïÑÔ Pro³ÌÐò

C/C++ Pro*C/C++

FORTRAN Pro*FORTRAN

PASCAL Pro*PASCAL

COBOL Pro*COBOL

PL/I Pro*PL/I

Ada Pro*Ada

5¡¢·ÃÎÊÊý¾Ý¿âµÄ·½·¨

£¨1£©ÓÃSQL * Plus,ËüÓÐSQLÃüÁîÒÔ½»»¥µÄÓ¦ÓóÌÐò·ÃÎÊÊý¾Ý¿â£»

£¨2£©ÓõÚËÄ´úÓïÑÔÓ¦Óÿª·¢¹¤¾ß¿ª·¢µÄÓ¦ÓóÌÐò·ÃÎÊÊý¾Ý¿â£¬ÕâЩ¹¤¾ßÓÐSQL*Froms£¬QL*Reportwriter,SQL*MenuµÈ.

£¨3£©ÀûÓÃÔÚµÚÈý´úÓïÑÔǶÈëµÄSQLÓïÑÔ»òORACLE¿âº¯ÊýÀ´µ÷ÓÃÀ´·ÃÎÊ¡£·ÃÎÊoracleÊý¾Ý¿âµÄ·½·¨¡£

ÆäËü£º

\

\

6¡¢µÚÒ»¸öpro*C³ÌÐò

A ÔÚ½øÐÐpro*c³ÌÐò¿ª·¢µÄʱºò£¬ÒªÅäÖÃ/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/adminϵÄpcscfg.cfg¡£

\

ÉÏÃæµÄÅäÖÃÊÇÒ»¸öÕýÈ·µÄÅäÖá£

B ´´½¨dm01_hello.pc

ÎļþÄÚÈÝÈçÏ£º

ÒÀÀµµÄÍ·Îļþ£º

/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public쵀SQLCA.H

dm01_hello.pcÎļþÄÚÈÝ£¨Ê¹ÓÃUE¹¤¾ß£¬±£´æºó¼´¿Éͨ¹ýFTPÉÏ´«µ½·þÎñÆ÷ÉÏ£©

#include

#include

#include "sqlca.h"

//¶¨ÒåËÞÖ÷±äÁ¿ serverid

EXEC SQL BEGIN DECLARE SECTION;

//¸ñʽ£ºÓû§Ãû/Óû§ÃÜÂë@·þÎñÆ÷Ãû

char *serverid = "scott/123456@orcl";

EXEC SQL END DECLARE SECTION;

int main()

{

int ret = 0;

printf("hello....\n");

//ÔÚCÖÐÊÇËÞÖ÷±äÁ¿

printf("serverid:%s \n", serverid);

//ǶÈëʽSQLÓïÑÔ±ØÐëÒªÒÔ EXEC SQL¿ªÍ·

//:serverid ¼ÓÉÏ£º±íʾʹÓÃÕâ¸ö±äÁ¿

EXEC SQL connect :serverid;

if (sqlca.sqlcode != 0)

{

ret = sqlca.sqlcode;

printf("EXEC SQL connect:err, %d\n", ret);

return ret;

}

printf("connect ok\n");

return ret;

}

±àÒë²¢ÔËÐУºdm01_hello.pc£¬Ö´ÐеÄÃüÁîÊÇ£ºproc dm01_hello.pc

\

½Ó×ÅÉú³É.outÎļþ¡£

×¢ÒâÒ»¸ö´íÎó1£º

\

³öÏÖÉÏÃæµÄ´íÎóµÄÔ­ÒòÊÇûÓÐÒýÈë¹²Ïí¿â£¬Òª°´ÕÕÏÂÃæµÄ·½Ê½Ö´ÐУº

gcc dm01_hello.c -o dm01_hello -I/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public -L/home/oracle_11/app/oracle/product/11.2.0/db_1/lib ¨Clclntsh

ÉÏÃæµÄÊÇÒýÈëclntsh.soÕâ¸ö¹²Ïí¿â

×¢Òâ´íÎó2£º

[oracle@localhost day03]$ ./dm01_hello

hello....

serverid:scott/123456@orcl

EXEC SQL connect:err, -12541

¿ÉÒÔͨ¹ýÏÂÃæµÄÃüÁî²é¿´´íÎóÔ­Òò£º

oerr ora 12541 £¨Õâ¸ö´íÎóÊÇÒòΪ¼àÌýδÆô¶¯£©

ÕâʱºòÒª£º

sqlplus /nolog

conn /as sysdba

startup

quit

ÔÚÖ´ÐÐ:

lsnrctl start £¨¿ÉÒÔͨ¹ýps ¨Cu oracleÃüÁî²é¿´oracleÏà¹ØÆô¶¯·þÎñ£©

ÔÙÖ´ÐеÄʱºò¾Í²»»á³öÏÖ´íÎóÁË¡£

7 PreCompile±àÒëÆ÷Ô¤±àÒë³ÌÐò

1¡¢¸Ã¹¤¾ßÔÚʲôµØ·½

¹¦ÄÜ£ºÍê³ÉPro*cÔ´³ÌÐòµ½´¿CÔ´³ÌÐòµÄת»»

»ù±¾ÃüÁî¸ñʽ£º

PROC INAME=filename [OptionName1=value1]¡­[OptionNameN=valueN]

³£ÓñàÒëÑ¡Ï

INAME=path and filename (name of the input file)

ONAME=path and filename (name of the output file)

INCLUDE=path (Í·ÎļþËùÔÚ·¾¶£©

--INCLUDE =·¾¶Ãû»ò INCLUDE =(·¾¶Ãû1,·¾¶Ãû2)

PARSE=FULL | PARTIA | NONE (default FULL for C, Others for C++) Èç¹ûÏë±àÒëc++£¬Òª¸Ä³ÉPARTIA»òNONE

CODE=ANSI_C | CPP (default ansi_c)

USERID=username/password

8 proc±àÒëc++Îļþ

ĬÈÏÇé¿öÏÂprocÊDZàÒë .c ÎļþµÄ¡£ÒªÏë±àÒëc++Îļþ£¬ÐèÒªÖ´ÐÐÀàËÆÏÂÃæµÄ²Ù×÷£º

proc iname=./dm02_hello.pconame=dm02_hello.cc PARSE=NONE CODE=CPP

#include

#include

#include

#include "sqlca.h"

using namespace std;

//¶¨ÒåËÞÖ÷±äÁ¿ serverid

EXEC SQL BEGIN DECLARE SECTION;

char *serverid = "scott/123456@orcl";

EXEC SQL END DECLARE SECTION;

int main()

{

int ret = 0;

cout << "hello..." << endl;

//ÔÚCÖÐËÞÖ÷±äÁ¿

printf("serverid:%s \n",serverid);

//ǶÈëʽSQLÓïÑÔ±ØÐëÒªÒÔEXEC SQL¿ªÍ·

//:serverid ÒªÒýÓÃserveridʱ£¬ÒªÊ¹Óãº

EXEC SQL connect :serverid;

if(sqlca.sqlcode != 0)

{

ret = sqlca.sqlcode;

printf("EXEC SQL connect:err,%d\n",ret);

return ret;

}

printf("connect ok \n");

return ret;

}

Ö´ÐÐÃüÁ

proc iname=./dm02_hello.pc oname=dm02_hello.cc PARSE=NONE CODE=CPP

Ö´Ðнá¹û£º

\

×¢ÒâÉÏÃæºìÏß²¿·ÖºÍÖ´ÐÐCµÄ²»Ïàͬ

½Ó×űàÒëccÎļþ£º

g++ dm02_hello.cc -o dm02_hello -I/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/public -L/home/oracle_11/app/oracle/product/11.2.0/db_1/lib ¨Clclntsh

\

\

9.±àдһ¸ö×î¼òµ¥µÄMakeFile

all:dm01_hello dm02_hello