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;
分享到:
相关推荐
我们可以在C程序中编写这个计算函数,然后在Oracle中创建一个外部过程,将其指向这个C程序。在PL/SQL中调用这个外部过程,传入必要的参数,计算结果将直接返回,而无需将大量中间数据传输到客户端。 总的来说,...
本篇介绍的《Oracle8i PL_SQL外部过程在海量数据处理中的应用》详细讲解了如何利用Oracle8i引入的外部过程来提高数据处理能力。 外部过程是一种服务器端的程序,它允许用户用编程语言(例如C语言)编写例程,然后...
它还可以进行快速复杂的科学计算,例如使用C语言编写的计算两个节点间最短路径算法的外部过程,使Oracle可以快速进行车辆导航。 外部过程体系结构具有以下特性:使用共享库而非可执行文件,这有助于节省内存空间;...
Oracle提供了一种机制,使得PL/SQL可以直接调用C语言编写的程序,这大大增强了PL/SQL的扩展能力。这个过程涉及到多个步骤: 1. 用户通过PL/SQL执行包含C函数调用的代码。 2. PL/SQL调用的C函数需要通过别名库...
因此,ArcSDE利用C语言编写的外部过程,在Oracle中调用这些动态库,从而实现了高效的空间数据处理。 #### 调用过程详解 在用户执行SQL语句,如`SELECT sde.st_astext(shape) FROM sde.test`时,ArcSDE在Oracle...
在描述中提到,由于Qt本身并不直接支持Oracle接口,因此我们可以采用C语言编写动态链接库(DLL),封装Oracle的OCI接口,然后在Qt应用中调用这个DLL。这种方式使得我们可以独立于Qt平台特性来实现数据库操作,确保...
OCI是由头文件和库函数等组成的一套Oracle数据库应用编程接口,而外部过程是使用C语言编写的可从PL/SQL中调用的过程或函数。 本文提出了一个基于Oracle Developer/2000与外部过程相结合的开发方案,不但实现了管理...
接下来,我们需要在操作系统级别创建一个守护进程,通常是通过编写C语言或其他支持系统调用的程序来实现。这部分程序(如上述的Pro*C代码示例)应该能够接收来自数据库的命令,解析并执行它们,然后将结果反馈回...
数据类型和宿主变量是Pro*C程序开发的核心部分,文档中对ORACLE的数据类型进行了内部和外部数据类型的分类描述,并讲述了如何在Pro*C中声明和使用宿主变量、指示变量等。此外,文档还提供了一些实用技巧和方针,帮助...
- PL/SQL是Oracle数据库特有的过程化语言,结合了SQL的查询和更新能力,用于创建存储过程、触发器、函数等数据库对象。 - PL/SQL块结构包括声明部分、执行部分和异常处理部分。 5. **数据访问接口**: - ODBC...
该指南介绍了如何使用Cache Connect技术将TimesTen与Oracle数据库或其他外部数据源集成,实现快速缓存和数据同步。 8. **Oracle TimesTen Java Developer and Reference Guide**: 针对Java开发者,提供了关于...
Oracle Call Interface (OCI) 是Oracle数据库提供的一个底层编程接口,它允许开发者以C语言编写应用程序,直接与Oracle数据库服务器交互。这些应用程序可以使用OCI来执行各种数据库操作,包括查询、更新、事务处理、...
本示例通过创建用户、权限分配、编写C语言程序以及在Oracle环境中部署这些程序来实现系统调用接口。 #### 创建用户及权限配置 首先,需要创建一个专门用于此目的的用户,并赋予相应的权限: 1. **创建用户**:...
本章可能介绍如何编写和调用C语言编写的外部过程,以及如何处理I/O和安全性问题。 9. **第20章:使用对象关系特性** Oracle的对象关系特性允许存储自定义数据类型和复杂数据结构。本章可能涵盖对象类型、嵌套表、...
在使用PRO*C时,开发者首先编写包含SQL语句的PRO*C源程序,然后运行预编译器将SQL语句转换为Oracle调用,生成纯C语言的源代码。这种方式的优点在于,它可以实现以下功能: - 支持多种高级编程语言,如C、Ada、...
Oracle Pro*C/C++是一种将SQL语句嵌入到C或C++语言中的预编译器技术,而OCI(Oracle Call Interface)是一个提供接口让开发人员能使用C语言直接与Oracle数据库交互的编程库。本教程将详细介绍这两种技术的基本概念和...