|
|
|
|
移动端

2.6.1 C语言,使用Oracle预编辑器(Pro*C)

《Oracle PL/SQL程序设计(第6版)(上下册)》第2章创建和运行PL/SQL代码,本章将展示如何在一个最基本的层面上(使用SQL*Plus)完成上述任务,同时对这些细小差别进行大致的讲述。本节为大家介绍C语言,使用Oracle预编辑器(Pro*C)。

作者:方鑫 译来源:人民邮电出版社|2017-09-06 20:17

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.6.1 C语言,使用Oracle预编辑器(Pro*C)

Oracle至少提供两种C语言接口:一种叫OCI(Oracle Call Interface),这个是专业牛人的主场;另一种叫Pro*C。OCI提供了上百个函数,就算是一个简单的查询,我们也要从底层操作开始编码:打开、解析、绑定、执行、获取结果等动作分解。即使是一段完成最简单功能的OCI程序,也要大约200行代码的长度……算了,还是演示Pro*C的例子好了。Pro*C是一种预编译技术,允许我们把C、SQL和PL/SQL代码汇合在一起编写。我们通过Oracle的proc程序运行这个混合编码,在输出端得到C编码:

  1. /* File on web: callbooktitle.pc */  
  2. #include <stdio.h> 
  3. #include <string.h> 
  4. EXEC SQL BEGIN DECLARE SECTION;  
  5. VARCHAR uid[20];  
  6. VARCHAR pwd[20];  
  7. VARCHAR isbn[15];  
  8. VARCHAR btitle[400];  
  9. EXEC SQL END DECLARE SECTION;  
  10. EXEC SQL INCLUDE SQLCA.H;  
  11. int sqlerror();  
  12. int main()  
  13. {  
  14. /* VARCHARs actually become a struct of a char array and a length */  
  15. strcpy((char *)uid.arr,"scott");  
  16. uid.len = (short) strlen((char *)uid.arr);  
  17. strcpy((char *)pwd.arr,"tiger");  
  18. pwd.len = (short) strlen((char *)pwd.arr);  
  19. /* this is a cross between an exception and a goto */  
  20. EXEC SQL WHENEVER SQLERROR DO sqlerror();  
  21. /* connect and then execute the function */  
  22. EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;  
  23. EXEC SQL EXECUTE  
  24. BEGIN  
  25. :btitle :booktitle('0-596-00180-0');  
  26. END;  
  27. END-EXEC;  
  28. /* show me the money */  
  29. printf("%s\n", btitle.arr);  
  30. /* disconnect from ORACLE */  
  31. EXEC SQL COMMIT WORK RELEASE;  
  32. exit(0);  
  33. }  
  34. sqlerror()  
  35. {  
  36. EXEC SQL WHENEVER SQLERROR CONTINUE;  
  37. printf("\n% .70s \n", sqlca.sqlerrm.sqlerrmc);  
  38. EXEC SQL ROLLBACK WORK RELEASE;  
  39. exit(1);  

我们可以看到,Pro*C不是一个追求纯粹的语言家所支持的。其实谁也不愿意和这种方式生成的C代码打交道,但无论如何,许多公司发现,Pro*C(或Pro*Cobol,或其他几种Oracle支持的语言)作为介于OCI(太难)和类似Visual Basic(太慢,笨重)语言之间的一种选择,还是有其存在的意义的。

从Oracle自己的文档中,可以找到最全面准确的关于Pro*C的信息。

喜欢的朋友可以添加我们的微信账号:

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

C++编程你也行

本书是一本优秀的C++教材,内容包括:基础类型、操作符和简单变量,循环和决策,命名空间和C++标准库,用C++编写函数,行为、序列点和求值...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊