LOTOFILE 函数

LOTOFILE 函数将智能大对象复制到操作系统文件。

第一个参数指定要复制的 BLOB 或 CLOB 列。该函数从下列参数确定要创建什么文件:
  • pathname 标识目录路径和源文件名称。
  • file destination 标识此文件在其上的计算机,'client''server'
    • 设置 file destination'client' 来标识客户端计算机作为源文件的位置。pathname 可为完整的 pathname 或相对于当前目录的路径。
    • 设置 file destination'server' 来标识服务器计算机作为源文件的位置。要求完整的 pathname。
在缺省情况下,LOTOFILE 函数生成这种形式的 filename:
file.hex_id

在此格式中,file 是您在 pathname 中指定的 filename,而 hex_id 是唯一的十六进制智能大对象标识符。智能大对象标识符的最大位数为 17。然而,大多数智能大对象可能有位数较少的标识符。

例如,假设您指定 UNIX™ pathname 值如下:
'/tmp/resume'
如果 CLOB 列有标识符 203b2,则 LOTOFILE 创建文件:
/tmp/resume.203b2 
对于另一示例,假设您指定 Windows™ pathname 值如下:
'C:\tmp\resume'
如果 CLOB 列有标识符 203b2,则 LOTOFILE 函数会创建文件:
C:\tmp\resume.203b2  
要更改缺省的 filename,您可在 pathname 的 filename 中指定下列通配符:
  • 在 filename 中的一个或多个连续的问号(?)可生成唯一的 filename。

    LOTOFILE 函数以来自 BLOB 或 CLOB 列的标识符的十六进制数字替换每一问号。

    例如,假设您指定 UNIX pathname 值如下:

    '/tmp/resume??.txt'
    LOTOFILE 函数将十六进制标识符的 2 位数字放到该名称内。如果 CLOB 列有标识符 203b2,则 LOTOFILE 函数会创建文件:
    /tmp/resume20.txt  

    如果您指定多于 17 个问号,则 LOTOFILE 忽略它们。

  • filename 末尾的叹号(!)表示 filename 不需要是唯一的。

    例如,假设您指定 Windows pathname 值如下:

    'C:\tmp\resume.txt!'

    LOTOFILE 函数不使用 filename 中的智能大对象标识符,因此它生成下列文件:

    C:\tmp\resume.txt 

如果您指定的 filename 已存在,则 LOTOFILE 返回错误。

LOTOFILE 函数将 CLOB 值从数据库复制到客户端或服务器计算机上的文件时,它执行任何可能需要的代码集转换。

当您以远程数据库和远程数据库服务器的名称限定 LOTOFILE 时,BLOB 或 CLOB 列pathnamefile destination 成为对远程数据库服务器的相对值。

当您指定 server 作为文件目的地时,如下一示例中那样,LOTOFILE 函数将智能大对象从远程数据库服务器复制到在远程数据库服务器上指定目录中的源文件:
rdb@rserv:LOTOFILE(blob_col, 'C:\tmp\photo.gif!', 'server')
如果您指定 client 作为文件目的地,如在下例中那样,则 LOTOFILE 函数将智能大对象从远程数据库服务器复制到本地客户端计算机上指定的目录中的源文件:
rdb@rserv:LOTOFILE(clob_col, 'C:\tmp\essay.txt!', 'client')