您的位置:首页 > 博客中心 > 数据库 >

什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查

时间:2022-03-14 00:51



1 什么是Pro*C/C++

gxlsystem.com,布布扣

6、第一个pro*C程序

A   在进行pro*c程序开发的时候,要配置/home/oracle_11/app/oracle/product/11.2.0/db_1/precomp/admin下的pcscfg.cfg。

gxlsystem.com,布布扣

上面的配置是一个正确的配置。

B   创建dm01_hello.pc

文件内容如下:

接着生成.out文件。

 

注意一个错误1:

gxlsystem.com,布布扣

出现上面的错误的原因是没有引入共享库,要按照下面的方式执行:

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 –lclntsh

上面的是引入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 –u oracle命令查看oracle相关启动服务)

再执行的时候就不会出现错误了。

7 PreCompile编译器预编译程序

注意上面红线部分和执行C的不相同

gxlsystem.com,布布扣

9.编写一个最简单的MakeFile

10 数据库的增删改查:

删除

更新:

数据库中的结果:

gxlsystem.com,布布扣

查询并显示结果:

#include <stdio.h>

#include <string.h>

#include <string.h>

#include "sqlca.h"

 

//定义宿主变量 serverid

 

EXEC SQL BEGIN DECLARE SECTION  ;

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

         int              deptno;

         char         dname[20];

         char loc[20]      ;

        

         int              deptno2;

         char         dname2[20];

         char loc2[20]    ;

        

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");

        

         deptno = 50;

         strcpy(dname, "50name");

         strcpy(loc, "50loc");

        

        

         EXEC SQL select deptno, dname, loc into  :deptno2, :dname2, :loc2  from dept where deptno=:deptno;

        

         printf("%d, %s, %s\n", deptno2, dname2, loc2);

        

         EXEC SQL COMMIT  RELEASE; //提交事务断开连接

 

         return ret;

}

 

 

 

 

 

 

 

 

 

 

 

热门排行

今日推荐

热门手游