从 SQL 进行操作系统调用
2009-11-20 00:00:00 来源:WEB开发网写入文件
文章“ 从 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显示了详细信息。必须对调用类型给予特别关注,但除此以外,只需以正确的格式将数据写入文件。
- ››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表' (数...
更多精彩
赞助商链接