国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 将乐县| 南陵县| 巴林右旗| 当雄县| 巍山| 云和县| 肃宁县| 太保市| 黔东| 钦州市| 永吉县| 东兴市| 定边县| 阿克苏市| 台中县| 乃东县| 汝州市| 嘉祥县| 承德县| 万山特区| 宁阳县| 教育| 合作市| 东莞市| 当阳市| 清远市| 师宗县| 大渡口区| 邯郸市| 高雄县| 岗巴县| 临猗县| 天气| 叶城县| 湾仔区| 益阳市| 利辛县| 贵定县| 镇原县| 达拉特旗| 靖宇县|