ITPub博客

首页 > 数据库 > Oracle > oracle proc 开发环境

oracle proc 开发环境

原创 Oracle 作者:mrhaozi 时间:2009-12-10 10:49:34 0 删除 编辑
1. 环境变量
  ? 系统运行需要配置以下内容
  ORACLE_SID=ORA8
  NLS_LANG=American_America.zhs16cgb231280
  ORA_NLS33=/home/oracle/ocommon/nls/admin/data
  ORACLE_TERM=vt100
  SHLIB_PATH=/home/oracle/lib
  LD_LIBRARY_PATH=/home/oracle/lib:/usr/lib:.
  ORACLE_HOME=/home/oracle
  ORACLE_OWNER=oracle
  NLS_DATE_FORMAT='YYYY/MM/DD'
  ? Oracle Shared Library: SHLIB_PATH $ORACLE_HOME/lib
  说明:Oracle Shared Library在安装时自动建立,如有必要重建此库,可以Oracle 用户身份执行一下命令
   cd $ORACLE_HOME/rdbms/lib
  make -f ins_rdbms.mk client_sharedlib
  ? 日期格式的设置:有两种方法
  (1).通过在给定的SQL启动中设置 alter session set NLS_DATE_FORMAT
  (2).设置 INIT.ORA 中的 NLS_DATE_FORMAT 参数可设置缺省日期的格式
  ? 预编译选项:设置 PROCFLAGS='mode=ansi,def_sqlcode=true,parse=full,lines=true'
  ? 头文件:sqlca.h , oraca.h , sqlda.h
  2. 移植注意事项:
  ? 对于 char 型数据的处理:
  Informix 中用双引号括字符串,而。。。Oracle 中字符串用单引号 ’ 括起来,如用双引号 ” 则会出错(在Proc 中编译时不报错,运行时出错)
  如果插入的字符串比字段定义的长度长,在 Informix 中会自动截掉多余的字符,而在 Oracle中会报错
  在Oracel 中要使用 string 类型要采用如下的声明方式
   char name[41];
   EXEC SQL VAR name IS STRING(41);
  ? 头文件的使用:
  由于 Oracle 不使用 EXEC SQL DEFINE 定义宏,故要用到这些东西的地方,只有改成用常量或变量。
  3. 相关命令
  ? 查错用 oerr:命令格式 oerr ora err_num
  ? 查找标示符相关的库文件: symfind symname
  
  
  4. proc 预编译设置
  预编译选项 设置方式 缺省值 值域 说明
  代码一致性 Mode=string Oracle ansi, iso, oracle
  允许使用SQLCODE Def_sqlcode=boolean No yes, no,true, false
  指定预编译源文件 Iname=string *none* *none*
  指定预编译头文件路径 Include=string OR include=(string, …) ( ) *none*
  指定系统头文件的路径 Sys_include=stringOR Sys_include=(string, …) ( ) *none*
  预编译宏定义 define=string
  预编译后的代码类型 Code=string Kr_c ansi_c, cpp,kr_c
  指定与字符串数组,字符串对应的类型 Char_map=string Charz charz,varchar2,charf,string
  指定连接数据库的字符串(username/password [@dbname]) Userid=string *none* *none*
  指定 C 编译器支持的字符集 Comp_charset=string Multi_byte multi_byte,single_byte
  数据库兼容模式(Oracle) Dbms=string Native v6, v6_char,v7, native, v8
  事物相关参数 Duration=string Transaction session, transaction (设置object 在cache中的时间)
  错误处理 Errors=boolean Yes yes, no,true, false (是否将错误信息发送到终端)
  信息处理标准 Fips=string None none, sql89, sql2, yes, no
  游标控制 Hold_cursor=boolean No yes, no,true, false (control holding of cursors in the cursor cache)
  控制游标cache中的游标释放 Release_cursor=boolean No yes, no,true, false (control release of cursors from cursor cache)
  Allow a NULL fetch without indicator variable Unsafe_null=boolean No yes, no,true, false
  是否在产生的code 中加入行号(#line) Lines=boolean No yes, no,true, false
  设置字符串长度 Maxliteral=number 1024 10-1024
  可以被cache的打开的最大游标数目 Maxopencursors=number 10 *none*
  语言支持 nls_char, nls_local
  是否使用 ORACA Oraca=boolean No yes, no,true, false
  控制是否解析 non-SQL CODE Parse=string Full full, partial,none
  Control flagging of select errors Select_error=boolean Yes yes, no, true, false
  预编译时对SQL代码的检查方式 Sqlcheck=string Syntax(语法) none, syntax,semantics(语义), full, limited(有限的)
  是否支持多线程 Threads=boolean No yes, no, true, false
  允许使用varchar 结构 Varchar=boolean No yes, no,true, false
  
  
  5. 数据类型
  ? Oracle ProC 原始数据类型
  C Datatype or Pseudotype Description
  Char single character
  char[n] n-character array (string)
  Int Integer
  Short small integer
  long large integer
  float floating-point number (usually single precision)
  Double floating-point number (always double precision)
  VARCHAR[n] variable-length string
  
  ? Oracle Internal Type ?à C Type ( ProC External Type )
  ORACLE Internal Type C Type(External Type)
  VARCHAR2(Y)(Note 1) char
  CHAR(X)(Note 1) char[n]VARCHAR[n]IntShortLongFloatDouble
  NUMBER int
  NUMBER(P,S)(Note 2) ShortLongFloatDoubleCharChar[n]VARCHAR[n]
  DATE Char[n]VARCHAR[n]
  LONG Char[n]VARCHAR[n]
  RAW(X)(Note 1) Unsigned char[n]VARCHAR[n]
  LONG RAW Unsigned char[n]VARCHAR[n]
  ROWID Unsigned char[n]VARCHAR[n]
  MLSLABEL Unsigned char[n]VARCHAR[n]
  Notes:
  1. X ranges from 1 to 255. 1 is the default value. Y ranges from 1 to 4000.
  2. P ranges from 2 to 38. S ranges from -84 to 127.
  
  ? Informix Data Type ?àESQL/C Data Type ?à C Type
  SQL Data Type ESQL/C Predefined Data Type C Language Type
  BYTE loc_t
  CHAR(n)CHARACTER(n) Fixchar array[n] orString array[n+1] char array[n + 1] or char *
  DATE Date long int
  DATETIME Datetime or dtime_t
  DECIMAL(m,n)DECNUMERICMONEY(m,n) Decimal or dec_t
  FLOATDOUBLE PRECISION Double
  INTEGERINT 4-byte integer
  INTERVAL Interval or intrvl_t
  MULTISET(e) Collection
  NCHAR(n) Fixchar array[n] orString array[n+1] char array[n + 1] or char *
  NVARCHAR(m) Varchar[m+1] orString array[m+1] char array[m+1]
  SERIAL 4-byte integer
  SMALLFLOATREAL Float
  SMALLINT 2-byte integer
  TEXT loc_t
  VARCHAR(m,x) Varchar[m+1] orString array[m+1] char array[m+1]
  BLOB ifx_lo_t
  BOOLEAN Boolean
  CLOB ifx_lo_t
  INT8 int8 or ifx_int8_t 8-byte integer
  LIST(e) Collection
  LVARCHAR Lvarchar Char
  Opaque data type Lvarchar, fixed binary, orvar binary
  ROW(...) Row
  SERIAL8 int8 or ifx_int8_t 8-byte integer
  SET(e) Collection
  
  
  ? Informix internal Type ?à C Type(External type Informix?à Oracle)?à Oracle Intal Type
  Informix Internal Type C Type(External Type) ORACLE Internal Type
  Char(x) Char(x) Char(x), varchar2(x)
  Integer Long NUMBER(9)
  Smallint Short Int NUMBER(6)
  Decimal Int, float, double NUMBER
  Float Float NUMBER(18,4)
  Serial Long NUMBER(11)
  Date Char(11)àDATE DATE (/ NUMBER(10) )
  Money
  DateTime Char(20) DATE
  Interval
  Varchar(1..255) Char(x) Char(x)
  Text
  Byte[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16396910/viewspace-1029547/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: linux字符集文件
下一篇: oracle ProC编程
请登录后发表评论 登录
全部评论

注册时间:2009-11-28

  • 博文量
    125
  • 访问量
    333467