国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle數(shù)據(jù)庫開發(fā)(二).Linux下配置使用ProC

2024-08-29 13:45:52
字體:
供稿:網(wǎng)友
一、提要 上文簡單介紹了Windows下PRoC配置開發(fā),這次我們使用linux平臺再次配置Oracle ProC開發(fā)環(huán)境(RedHat Linux 9 + Oracle 92)。 《ORACLE數(shù)據(jù)庫開發(fā)(一).Windows下配置使用ProC》和《ORACLE數(shù)據(jù)庫開發(fā)(二).Linux下配置使用ProC》這兩篇文章的目的只是做一些基礎(chǔ)介紹,至于Oracle ProC編譯參數(shù)以及Linux下的ProC Makefile
相關(guān)內(nèi)容,將再后續(xù)文章逐步引入。
    一言以弊之,先易后難。二、數(shù)據(jù)庫環(huán)境    與Windows下十分類似,首先確認(rèn)安裝了組件,Oracle - application Development - Pro C-C++ 。安裝后會在$ORACLE_HOME/bin生成相應(yīng)可執(zhí)行文件,在$ORACLE_HOME/precomp/demo/proc下也會生成一些makefile文件和示例。三、示例文件    main.pc
    ---------------------------------------------------------  #include "sqlca.h"
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
  
  void sql_error(char *msg)
  {
  printf("/n%s %s/n", msg,(char *)sqlca.sqlerrm.sqlerrmc);
  EXEC SQL ROLLBACK RELEASE;
  exit(0);
  }
  
  int main() {
  
  EXEC SQL INCLUDE sqlca;
  EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
  EXEC SQL WHENEVER SQLERROR DO sql_error(" <ERROR> ");
  
  EXEC SQL BEGIN DECLARE SECTION;
  VARCHAR oraCN[30];
  EXEC SQL END DECLARE SECTION;
  
  strcpy(oraCN.arr,"system/manager@linuxdb");
  oraCN.len = strlen(oraCN.arr);
  oraCN.arr[oraCN.len]='/0';
  
  EXEC SQL CONNECT :oraCN;
  printf("/n [OK Connected!] ");
  
  return 0;
  
  }   代碼其實(shí)是Windows的原版。
  
  
四、編譯運(yùn)行    無需修改任何參數(shù)文件,即安裝后直接創(chuàng)建main.pc,執(zhí)行如下命令:
   
  $ proc parse=none iname=main.pc
  
  Pro*C/C++: Release 9.2.0.4.0 - ProdUCtion on Thu Jun 7 14:17:05 2007
  
  Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
  
  System default option values taken from: /home/ora/ora9/oracle/precomp/admin/pcscfg.cfg
  
  $ gcc -g -o main main.c -I/home/ora/ora9/oracle/precomp/public -L/home/ora/ora9/oracle/lib -lclntsh
  
  $ ./main
  
   <ERROR>  ORA-12541: TNS:no listener
   
   成功編譯運(yùn)行,這里也可以使用《ProC動態(tài)SQL示例(第1,2,3種方法)》一文中的示例,將//注釋全部替換為空,即可編譯。

    http://blog.csdn.net/liwei_cmg/archive/2006/05/29/759963.aspx
    不過會有告警提示:
  /tmp/ccC7E6qe.o(.text+0xea): In function `db_connect':
  /home/ora/develop/src/db.c:385: the `gets' function is dangerous and should not be used.
   
    這個(gè)是由于使用了gets函數(shù)所致,見gets的man手冊:
   
BUGS
       Never use gets().  Because it is impossible to tell without knowing the data in advance how many  characters  gets()  will  read,  and  because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use.  It has  been  used  to  break  computer security.  Use fgets() instead.       It  is  not  advisable  to  mix calls to input functions from the stdio library with low - level calls to read() for the file descriptor  asso-ciated  with  the  input stream; the results will be undefined and very probably not what you want.
      
    要解決這個(gè)問題,可以使用scanf函數(shù)替換gets,獲取屏幕輸入。如 scanf("%s",cmd)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 琼结县| 梁河县| 剑河县| 临邑县| 长岛县| 新和县| 崇信县| 沙坪坝区| 平南县| 福泉市| 呼和浩特市| 元氏县| 巴林右旗| 尤溪县| 浦县| 醴陵市| 西吉县| 兴业县| 饶河县| 虹口区| 开原市| 丰台区| 宝山区| 军事| 北宁市| 南陵县| 伊金霍洛旗| 宿州市| 邛崃市| 白玉县| 嵊泗县| 安徽省| 汝南县| 遂宁市| 扶沟县| 嘉义县| 炎陵县| 保康县| 中宁县| 巴东县| 徐水县|