win7下的oracle运行proc环境,oracle proc 开发环境

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博客 ” ,链接:http://blog.itpub.net/16396910/viewspace-1029547/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值