Pro*C中怎样嵌入pl/sql块

45次阅读
没有评论

共计 1634 个字符,预计需要花费 5 分钟才能阅读完成。

今天就跟大家聊聊有关 Pro* C 中怎样嵌入 pl/sql 块,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

/* 包含 C 头文件 */
#include stdio.h
#include string.h
#include stdlib.h
/* 包含 SQLCA 头文件 */
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlda;

int main()
{
  EXEC SQL BEGIN DECLARE SECTION;
  int  money;
  char answerbuff[200];
  int flag;

  char username[10],password[10],server[10];
  EXEC SQL END DECLARE SECTION;

  /*
  * 定义输入宿主变量: 接收用户名、口令和网络服务名
  *
  */
  strcpy(username, data_center
  strcpy(password, data_center
  strcpy(server, oradf1 /* 这里填写的是数据库的 SID*/

  /* 连接到数据库 */
  EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;
  if (sqlca.sqlcode==0)
  printf(连接成功!/n
  else
  /* 显示连接错误消息 */
  printf(%.*s/n , sqlca.sqlerrm.sqlerrml,
  sqlca.sqlerrm.sqlerrmc);
  /* 初始化 */
  money=0;
  flag=0; /* 用天判断是否找到数据 */

  /* 执行 plsql 块 */
  EXEC SQL EXECUTE
  BEGIN
  SELECT salary INTO :money FROM plsqltest WHERE name= ht
  :flag:=1;
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
  :answerbuff:= 数据没有找到
  END;
  END-EXEC;

  /* 输出结果 */
  if (flag==0)
  printf(%s/n ,answerbuff);
  else
  printf(总工资是:%d/n ,money);

}

=================================================

编译方法:
1. 如果在 PC 源程序中内嵌了 PL/SQL 块,SQLCHECK 应该 SEMANTICS 或是 FULL
2. 当 SQLCHECK 的值是 SEMANTICS 或是 FULL 时,必须设置 USERID
proc PARSE=NONE include=-I/opt/oracle/product/10.2.0/precomp/public include=-I/opt/oracle/product/10.2.0/rdbms/public  sqlcheck=fullUSERID=data_center/data_center@oradf1  iname=test.pc oname=test.c

gcc 的一些选项,不加这些,有时会报错。
gcc  -L/opt/oracle/product/10.2.0/lib -lclntsh -ldl -lm -lnsl  -o test test.c

===========================================

创建表:
create table PLSQLTEST
(
 salary NUMBER,
 NAME  VARCHAR2(10)
 );

insert into plsqltest (salary, NAME)
  values (1000, xym
insert into plsqltest (salary, NAME)
  values (2000, ht
  commit;

看完上述内容,你们对 Pro* C 中怎样嵌入 pl/sql 块有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计1634字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)