动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

Oracle与Access表之间的导入和导出


发表日期:2008-2-9


本文主要回答了如何在FORM的程序中实现Oracleaccess表之间的导入和导出这个问题。 问题的解答: 预备工作: 1.安装OCA。运行Developer的安装盘,选择自定义安装,选择Oracle Open Client Adapter for ODBC安装。 2.在数据源(ODBC)中添加DSN。控制面板->治理工具->数据源(ODBC),选择“用户DSN”,添加要进行操作的Access的文件。在“高级”选项里,填上“登录名称”和“密码”(很重要,在程序中会用到)。 下面以实际例子来说明: 假设在Oracle中和Access中都有一个student表,表中字段相同(name char(10) ,age number(2)),在预备工作第2步中的“数据源名”为test,“登录名称”和“密码”都为user。 下面为从Oracle导出到Access的PROCEDURE:
PROCEDUREoracle_to_accessIS connection_idEXEC_SQL.ConnType; action_cursorEXEC_SQL.CursType; ignorePLS_INTEGER; t_namestudent.name%type; t_agestudent.age%type; cursortemp_cursorisselect*fromstudent; BEGIN connection_id:=EXEC_SQL.OPEN_CONNECTION('user/user@odbc:test'); action_cursor:=EXEC_SQL.OPEN_CURSOR(connection_id); EXEC_SQL.PARSE(connection_id,action_cursor,'delete*fromstudent'); ignore:=EXEC_SQL.EXECUTE(connection_id,action_cursor); EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor); opentemp_cursor; eXPort_count:=0; action_cursor:=EXEC_SQL.OPEN_CURSOR(connection_id); EXEC_SQL.PARSE(connection_id,action_cursor,' INSERTINTOstudent(name,age)values(:1,:2)'); loop fetchtemp_cursorintot_name,t_age; exitwhentemp_cursor%notfound; EXEC_SQL.BIND_VARIABLE(connection_id,action_cursor,':1',t_name); EXEC_SQL.BIND_VARIABLE(connection_id,action_cursor,':2',t_age); ignore:=EXEC_SQL.EXECUTE(connection_id,action_cursor); endloop; closetemp_cursor; EXEC_SQL.PARSE(connection_id,action_cursor,'commit'); ignore:=EXEC_SQL.EXECUTE(connection_id,action_cursor); EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor); EXEC_SQL.CLOSE_CONNECTION(connection_id); EXCEPTION WHENEXEC_SQL.PACKAGE_ERRORTHEN IFEXEC_SQL.LAST_ERROR_CODE(connection_id)!=0THEN message('数据导出至ACCESS失败:' TO_CHAR(EXEC_SQL.LAST_ERROR_CODE(connection_id))' :'EXEC_SQL.LAST_ERROR_MESG(connection_id)); ENDIF; IFEXEC_SQL.IS_CONNECTED(connection_id)THEN IFEXEC_SQL.IS_OPEN(connection_id,action_cursor)THEN EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor); ENDIF; EXEC_SQL.CLOSE_CONNECTION(connection_id); ENDIF; END; 下面为从Access导出到Oracles的procedure: PROCEDUREAccess_to_oracleIS connection_idEXEC_SQL.ConnType; action_cursorEXEC_SQL.CursType; ignorePLS_INTEGER; t_namestudent.name%type; t_agestudent.age%type; BEGIN connection_id:=EXEC_SQL.OPEN_CONNECTION('user/user@odbc:test'); action_cursor:=EXEC_SQL.OPEN_CURSOR(connection_id); deletefromstudent; EXEC_SQL.PARSE(connection_id,action_cursor,'selectname,agefromstudent'); ignore:=EXEC_SQL.EXECUTE(connection_id,action_cursor); exec_sql.define_column(connection_id,action_cursor,1,t_name,10); exec_sql.define_column(connection_id,action_cursor,2,t_age); ignore:=EXEC_SQL.EXECUTE(connection_id,action_cursor); while(exec_sql.fetch_rows(connection_id,action_cursor)>0) loop exec_sql.column_value(connection_id,action_cursor,1,t_name); exec_sql.column_value(connection_id,action_cursor,2,t_age); insertintotest(name,age)values(t_name,t_age); endloop; commit; EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor); EXEC_SQL.CLOSE_CONNECTION(connection_id); EXCEPTION WHENEXEC_SQL.PACKAGE_ERRORTHEN IFEXEC_SQL.LAST_ERROR_CODE(connection_id)!=0THEN message('数据导入至ORACLE失败:' TO_CHAR(EXEC_SQL.LAST_ERROR_CODE(connection_id))' :'EXEC_SQL.LAST_ERROR_MESG(connection_id)); ENDIF; IFEXEC_SQL.IS_CONNECTED(connection_id)THEN IFEXEC_SQL.IS_OPEN(connection_id,action_cursor)THEN EXEC_SQL.CLOSE_CURSOR(connection_id,action_cursor); ENDIF; EXEC_SQL.CLOSE_CONNECTION(connection_id); ENDIF; END;
注重:EXEC_SQL.BIND_VARIABLE中绑定的变量只能是以下三种类型:NUMBER,DATE,VARCHAR2。对于Access中的“是/否”的布尔型变量,可以用NUMBER类型的1和0来表示。假如Access中的表名或者字段名中有空格,在写SQL语句的时候可以用双引号把表名或者字段名包括起来,如:本例中假如Access中表名为student detail,字段名分别为student name和student age,那插入数据的SQL语句为:
insert into “student detail”(“student name”,”student age”) values(:1,:2)。

关注此文的读者还看过:
·2012-2-8 13:10:57 SQL Server与Oracle并行访问本质区别
·2012-2-8 13:10:00 以 spfdisk 分割硬盘的一个范例
·2012-2-8 13:09:22 Oracle数据库管理脚本介绍
·2012-2-8 13:09:08 oracle中关于数据库和表的问题
·2012-2-8 13:08:49 基于成本的优化器 — 一般错误概念和问题
·2012-2-8 13:08:23 如何恢复一个只有完好数据文件的数据库?
·2012-2-8 13:08:17 如何使用DBMS_REPAIR检测和修补数据坏块
·2012-2-8 13:08:01 破解Oracle一般用户的口令
·2012-2-8 13:08:01 图文:详解数据库Oracle 11g的基本安装
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
项目外包信息
·找长期合作的网页设计师(切图+
·SNS 网站开发
·云南大蓄文化传播有限公司网站设
·药品代购网站
·FLASH网站汉化
·求高手帮我设计一个减肥产品网站
·flash首页制作(已有设计图)
·寻求长期外包人员
·网页页面修改
·北京地区 flash动画合作
·佛山网站建设+263企业邮箱找我。
·ecshop+Discuz! X2+ Home会员整
·寻找网站建设团队或者个人合伙
·LOGO设计外包
·企业网后台程序外包
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<Oracle教程>的内容


数据教程文章分类
SQL教程
SQL技巧
SQL安全
SQL文摘
Oracle教程
MySQL教程
Access教程
DB2教程
Sybase教程
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号