WEB开发网
开发学院数据库DB2 从 SQL 进行操作系统调用 阅读

从 SQL 进行操作系统调用

 2009-11-20 00:00:00 来源:WEB开发网   
核心提示: 写入文件文章“ 从 SQL 中进行文件输出和调试的 UDF”展示了一种常见情形,在那种情形下如果能够从 SQL 语句内部将数据写到文件将是非常有帮助的,从 SQL 进行操作系统调用(8),该文章应用了本节所介绍的概念, 写入文件的操作基本上是从文件读取的逆过程,必须对调用

写入文件

文章“ 从 SQL 中进行文件输出和调试的 UDF”展示了一种常见情形,在那种情形下如果能够从 SQL 语句内部将数据写到文件将是非常有帮助的。该文章应用了本节所介绍的概念。

写入文件的操作基本上是从文件读取的逆过程。必须实现文件格式与将要写入的信息之间的映射。同样,用户自定义函数可以用很方便的方式执行这些任务。在下列示例中,我假定所采用的文件格式定义与我们上面用过的相同。

该文件由一系列统一的结构化记录组成。

每个记录总共包含 60 字节。

前 10 个字节包含以文本表示的 32 位带符号的整数值。

后 50 个字节表示定长字符串。

实现写操作的用户自定义函数接受两个输入参数。第一个参数的类型是 INTEGER,第二个参数的类型是 VARCHAR(50)。我们由此实现了如 清单 7所示的 SQL 语句,用来注册数据库中的函数。

清单 7. 创建将数据写入到文件的函数

CREATE FUNCTION writeFile( fileName VARCHAR(255), 
   intValue INTEGER, strValue VARCHAR(50) ) 
  RETURNS INTEGER 
  SPECIFIC writeFile 
  EXTERNAL NAME 'os_calls!writeFileFromParams' 
  LANGUAGE C 
  PARAMETER STYLE SQL 
  DETERMINISTIC 
  NOT FENCED 
  RETURNS NULL ON NULL INPUT 
  NO SQL 
  EXTERNAL ACTION 
  SCRATCHPAD 
  DISALLOW PARALLEL 
  FINAL CALL; 
  
GRANT EXECUTE ON FUNCTION writeFile TO PUBLIC; 

使用高速暂存(scratchpad)来将打开文件描述符从一个 UDF 调用传递到下一个调用。这样,如果要在单个 SQL 语句向文件写入多个记录,我们就可以节省反复打开和关闭文件所用的时间。实现写操作的 C 代码也很简单。 清单 8显示了详细信息。必须对调用类型给予特别关注,但除此以外,只需以正确的格式将数据写入文件。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:SQL 进行 操作系统

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接