从 SQL 进行操作系统调用
2009-11-20 00:00:00 来源:WEB开发网注:对于版本 DB2 UDB 7.x,在 UNIX 系统上使用 bldudf 工具,在 Windows 系统上使用 bldmudf 工具。语法略有不同;请参考文件中的描述以获取更多详细信息。
要在文件 os_calls.c 中构建 UDF,只要执行:
INSTHOME
/sqllib/samples/c/bldrtn os_calls
其中 INSTHOME 是到实例主目录的路径。例如:
c:\\program files\\ibm\\sqllib\\samples\\c\\bldrtn os_calls
或
/home/stolze/sqllib/samples/c/bldrtn os_calls
该脚本的最后一步将共享库复制到实例目录中的 sqllib/function 目录。
从文件中读取
当读取文件时,如何用 SQL 表示文件内容有几种选择。例如,整个文件内容可以变成一个标量 VARCHAR 或 CLOB 值(二进制文件可以转换成 BLOB),或者如果文件有良好定义的结构,那么该结构就可以被映射成关系表。在第一种情况下,外部的标量函数可以完成该任务;在第二种情况下,我们使用 DB2 表函数来执行从文件内部结构到数据库系统中的表结构的映射。
首先,我们处理将文件的整个内容表示为单个 CLOB 值的基本情况。这意味着读取该文件的整个内容并将它存储到 LOB 值中,然后将该 LOB 值返回到数据库引擎。该函数的输入是绝对文件名,输出是包含结果的 CLOB。使用 清单 3中的 SQL 语句在数据库中创建函数。
清单 3. 创建将文件读入 CLOB 中的函数
CREATE FUNCTION readFile(fileName VARCHAR(255))
RETURNS CLOB(1M)
SPECIFIC readFileToClob
EXTERNAL NAME 'os_calls!readFileToClob'
LANGUAGE C
PARAMETER STYLE SQL
DETERMINISTIC
NOT FENCED
RETURNS NULL ON NULL INPUT
NO SQL
NO EXTERNAL ACTION
NO SCRATCHPAD
ALLOW PARALLEL
NO FINAL CALL;
GRANT EXECUTE ON FUNCTION readFile TO PUBLIC;
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接