`
tower
  • 浏览: 244915 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在oracle里面引用外部的C语言编写的过程

阅读更多

1、首先编写下面的代码:

#include	<stdio.h>
#include	<stdlib.h>
#include	<string.h>
#include	<errno.h>
#include	<fcntl.h>
#include	<unistd.h>
#include	<sys/types.h>
#include	<sys/stat.h>


int	strtime2num(char *tstr)
{
    struct tm m;
        
    if (tstr==NULL)
      	return 0;
    m.tm_year = atoi(tstr)-1900;
    m.tm_mon = atoi(tstr+5)-1;
    m.tm_mday = atoi(tstr+8);
    m.tm_hour = atoi(tstr+11);
    m.tm_min = atoi(tstr+14);
    m.tm_sec = atoi(tstr+17);
    return(mktime(&m));
}

 

编译选项,solaris下的cc编译,其他平台可以自行处理:

test_func.o : test_func.c
	cc -g -xarch=v9 -o ${SYNCSVRDIR}/test_func.o -c $(SYNCSVRDIR)/test_func.c

test_func.so: test_func.o
	cc -G -Kpic -xarch=v9 -o test_func.so test_func.o 

 

关键记得把这个so放到server运行的机器上去,比方说放到:/database/oracle/product/10.2.0/Db_1/lib/test_func.so。在oracle里面创建函数:

 

create or replace library MYLIB as '/database/oracle/product/10.2.0/Db_1/lib/test_func.so';


CREATE OR REPLACE FUNCTION mytest1(a varchar2) RETURN binary_integer AS
LANGUAGE C NAME "strtime2num"
LIBRARY MYLIB PARAMETERS (a STRING,RETURN int);

 

好了,试试:

select mytest1('2006-12-01 00:00:00') from dual;
 

 

分享到:
评论

相关推荐

    Oracle数据库调用外部过程的方法与实现.pdf

    我们可以在C程序中编写这个计算函数,然后在Oracle中创建一个外部过程,将其指向这个C程序。在PL/SQL中调用这个外部过程,传入必要的参数,计算结果将直接返回,而无需将大量中间数据传输到客户端。 总的来说,...

    Oracle8i PL_SQL外部过程在海量数据处理中的应用.pdf

    本篇介绍的《Oracle8i PL_SQL外部过程在海量数据处理中的应用》详细讲解了如何利用Oracle8i引入的外部过程来提高数据处理能力。 外部过程是一种服务器端的程序,它允许用户用编程语言(例如C语言)编写例程,然后...

    Oracle外部过程在高性能海量数据处理中的应用.pdf

    它还可以进行快速复杂的科学计算,例如使用C语言编写的计算两个节点间最短路径算法的外部过程,使Oracle可以快速进行车辆导航。 外部过程体系结构具有以下特性:使用共享库而非可执行文件,这有助于节省内存空间;...

    oracle,如何在plsql里调用C语言写的程序,OCP漫漫路途之调用[收集].pdf

    Oracle提供了一种机制,使得PL/SQL可以直接调用C语言编写的程序,这大大增强了PL/SQL的扩展能力。这个过程涉及到多个步骤: 1. 用户通过PL/SQL执行包含C函数调用的代码。 2. PL/SQL调用的C函数需要通过别名库...

    arcsde 操作oracle的操作原理

    因此,ArcSDE利用C语言编写的外部过程,在Oracle中调用这些动态库,从而实现了高效的空间数据处理。 #### 调用过程详解 在用户执行SQL语句,如`SELECT sde.st_astext(shape) FROM sde.test`时,ArcSDE在Oracle...

    qt调用oracle接口

    在描述中提到,由于Qt本身并不直接支持Oracle接口,因此我们可以采用C语言编写动态链接库(DLL),封装Oracle的OCI接口,然后在Qt应用中调用这个DLL。这种方式使得我们可以独立于Qt平台特性来实现数据库操作,确保...

    实现Oracle数据库中海量数据管理的简捷方案.pdf

    OCI是由头文件和库函数等组成的一套Oracle数据库应用编程接口,而外部过程是使用C语言编写的可从PL/SQL中调用的过程或函数。 本文提出了一个基于Oracle Developer/2000与外部过程相结合的开发方案,不但实现了管理...

    在Oracle数据库中运行操作系统命令

    接下来,我们需要在操作系统级别创建一个守护进程,通常是通过编写C语言或其他支持系统调用的程序来实现。这部分程序(如上述的Pro*C代码示例)应该能够接收来自数据库的命令,解析并执行它们,然后将结果反馈回...

    Oracle Pro_C 程序开发

    数据类型和宿主变量是Pro*C程序开发的核心部分,文档中对ORACLE的数据类型进行了内部和外部数据类型的分类描述,并讲述了如何在Pro*C中声明和使用宿主变量、指示变量等。此外,文档还提供了一些实用技巧和方针,帮助...

    oracle_11g_R2_client win32 客户端

    - PL/SQL是Oracle数据库特有的过程化语言,结合了SQL的查询和更新能力,用于创建存储过程、触发器、函数等数据库对象。 - PL/SQL块结构包括声明部分、执行部分和异常处理部分。 5. **数据访问接口**: - ODBC...

    oracle timesten内存数据库文档

    该指南介绍了如何使用Cache Connect技术将TimesTen与Oracle数据库或其他外部数据源集成,实现快速缓存和数据同步。 8. **Oracle TimesTen Java Developer and Reference Guide**: 针对Java开发者,提供了关于...

    Oracle-call-interface-programmers-guide.pdf

    Oracle Call Interface (OCI) 是Oracle数据库提供的一个底层编程接口,它允许开发者以C语言编写应用程序,直接与Oracle数据库服务器交互。这些应用程序可以使用OCI来执行各种数据库操作,包括查询、更新、事务处理、...

    为oracle增加系统调用接口

    本示例通过创建用户、权限分配、编写C语言程序以及在Oracle环境中部署这些程序来实现系统调用接口。 #### 创建用户及权限配置 首先,需要创建一个专门用于此目的的用户,并赋予相应的权限: 1. **创建用户**:...

    oracle专家高级编程(分章节word版)

    本章可能介绍如何编写和调用C语言编写的外部过程,以及如何处理I/O和安全性问题。 9. **第20章:使用对象关系特性** Oracle的对象关系特性允许存储自定义数据类型和复杂数据结构。本章可能涵盖对象类型、嵌套表、...

    用VC++开发Oracle数据库应用程序详解

    在使用PRO*C时,开发者首先编写包含SQL语句的PRO*C源程序,然后运行预编译器将SQL语句转换为Oracle调用,生成纯C语言的源代码。这种方式的优点在于,它可以实现以下功能: - 支持多种高级编程语言,如C、Ada、...

    Oracle Pro *C/C++ 和OCI 最详细的教程

    Oracle Pro*C/C++是一种将SQL语句嵌入到C或C++语言中的预编译器技术,而OCI(Oracle Call Interface)是一个提供接口让开发人员能使用C语言直接与Oracle数据库交互的编程库。本教程将详细介绍这两种技术的基本概念和...

Global site tag (gtag.js) - Google Analytics