网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle Database 10g 中新特性.
.Oracle数据库在网格计算中的应用.
.查询语句(SELECT)的优化.
.linux下oracle备份脚本--exp.
.Actualtests Oracle 1Z0-007 V06.
.[Oracle 10g] 表空间更名.
.Oracle数据库技术(25).
.如何确定Oracle是32 Bit(位)的还.
.Oracle数据库中分区表的操作方法.
.讲解Oracle创建表时Storage参数具.
.理解oracle的网络结构 解决连接问.
.被关在SQL外面破解SA的密码的方法.
.REDHAT9下安装Oracle9.2.0的成功.
.关于数据库编码优化的一些看法的.
.怎样看oracle查询语句执行计划?.
.Oracle FAQ 之OS相关与其它篇.
.在Oracle中实现各种日期处理完全.
.ORACLE之常用FAQ V1.0二(构架体系.
.为什么同机安装10g和11g后会出现.
.把Oracle数据库移植到Microsoft .

MobiLink通过Oracle返回下载的数据流

发表日期:2008-2-9


例:通过Sybase mobilink实现两个数据库之间数据同步(客户端与服务器),其中牵涉到数据的下载,在进行数据下载时,假如通过调用存储过程实现的下载流获取,那么实际操作中同步老是报错,原因如下: 环境描述如下: 中心数据库(服务器端):数据库为Oracle,mobilink服务器通过ODBC与数据库建立连接远程数据库(客户端):sybase ASA 客户端需要从服务端下载表A中指定条数的记录,由于业务需要,在下载过程中还需要对相关表格进行较为复杂设置,例如下载后需要将该记录的某列置为‘已下载’,从而避免其他客户端进行重复下载,因此在服务端使用存储过程进行下载流控制,从sybase文档中得知: Oracle requires that a package be defined.
This package must contain a record type
for the result set, and a cursor type
that returns the record type.
Create or replace package SPInfo asType
SPRec is record (    pk     integer,   
col1   varchar(100),    col2   varchar(20));
Type SPCursor is ref cursor return SPRec;
End SPInfo;
Next, Oracle requires a stored procedure
with the cursor type as the first parameter.
Note that the download_cursor script only
passes in two parameters, not three. For
stored procedures returning result sets
in Oracle, cursor types declared as parameters
in the stored procedure definition define
the strUCture of the result set, but do not
define a true parameter as such. In this
example, the stored procedure also adds
the script to the MobiLink system table.
Create or replace procedure   
DownloadMyTable( v_spcursor IN
OUT SPInfo.SPCursor,v_last_dl_ts IN
DATE,v_user_name IN VARCHAR ) AsBegin
Open v_spcursor For select pk, col1,
col2 from MyTable where last_modified >
= v_last_dl_ts and employee = v_user_name;
End;CALL ml_add_table_script
(   'v1',  'MyTable',  'download_cursor',
 '{CALL DownloadMyTable({ml s.last_table_download},
{ml s.username} )}'); 按照文档描述,进行相关设置后,进行同步,但是在同步进行中mobilink服务器报错,信息如下('EAPP_BARCODE_DOWNLOAD' 为存储过程名字): 错误: ODBC: [MERANT][ODBC Oracle driver]
[Oracle]ORA-06550: line 1, column 8:
PLS-00306: wrong number or types
of arguments in call to 'EAPP_BARCODE_DOWNLOAD'
ORA-06550: line 1, column 8:PL/SQL: Statement
ignored (ODBC 状态 = HY000,本地错误代码 = 6550)
I. 05/17 20:05:20 <1.9> [1100139459]:
错误环境: 用户名: 1100139459  修改的用户名: 1100139459
事务: 下载 表名: ES_APP_BARCODEI. 05/17 20:05:20 <1.9>
[1100139459]: 脚本版本: BCGET  脚本: {call
EAPP_BARCODE_DOWNLOAD(?,?)} 错误环境结束
I. 05/17 20:05:20 <1.9> [1100139459]:
警告: [10010] 未定义任何错误处理脚本。
缺省的动作代码 (3000) 将决定错误行为。
I. 05/17 20:05:20 <1.9> [1100139459]:
download_cursor ES_APP_BARCODE(关闭) 从错误信息看来,是由于调用存储过程时所使用参数个数错误导致,后来经过查找发现:可能出现该原因是在ODBC设置中未勾选“Procedure Returns Results”所致,进入ODBC设置面板,修改相关参数,再运行,一切正常。

上一篇:Oracle与Unisys为企业客户提供新选择 人气:468
下一篇:解析MobiLink实现基于时间戳的分区同步 人气:655
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐