随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从https://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站https://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!
如有Sybase数据库技术问题需要咨询,请联系我!
以下官方手册为SAP IQ 16.0 SP03中文版:
CREATE PROCEDURE 语句(表 UDF ) 创建外部表用户定义函数的接口(表 UDF)。用户必须经过专门授权才能使用表 UDF。
有关外部过程的 CREATE PROCEDURE 参考信息,请参见 CREATE PROCEDURE 语 句(外部过程)。有关 Java UDF 的 CREATE PROCEDURE 参考信息,请参见 CREATE PROCEDURE 语句 (Java UDF)
快速链接:
转至参数 (第 159 页) 转至用法 (第 160 页) 转至标准 (第 161 页)
转至权限 (第 161 页)
语法
CREATE [ OR REPLACE ] PROCEDURE
[ owner.]procedure-name ( [ parameter[, …]] )
| RESULT result-column [, …] )
[ SQL SECURITY { INVOKER | DEFINER } ]
EXTERNAL NAME ‘external-call’
[ IN ] parameter-name data-type [ DEFAULT expression ]
| [ IN ] parameter-name table-type
table-type - (back to parameter)
TABLE( column-name data-type [, ...] )
external-call - (back to Syntax)
[ column-name:]function-name@library; ...
参数
(返回顶部) (第 158 页)
• IN – 该参数是为标量参数提供值或为 UDF 的 TABLE 参数提供值集的对象。
注意: TABLE 参数不能声明为 INOUT 或 OUT。您只能有一个 TABLE 参数(它 的位置并不重要)。
• OR REPLACE – 指定 OR REPLACE (CREATE OR REPLACE PROCEDURE) 将创建 一个新过程或替换同名的现有过程。此子句将更改过程的定义,但保留现有权限。 如果尝试替换已使用的过程,则将返回错误。
• RESULT – 声明外部 UDF 结果集的列名称及其数据类型。各列的数据类型必须 是有效的 SQL 数据类型(例如,结果集中的列不能有 TABLE 数据类型)。结果 中的数据集隐含 TABLE。外部 UDF 只能有一个 TABLE 类型的结果集。
注意: TABLE 不是输出值。表 UDF 不能在结果集中存在 LONG VARBINARY 或 LONG VARCHAR 数据类型,但表参数化函数 (TPF) 可以在其结果集中存在大对象 (LOB) 数据。
TPF 不能产生 LOB 数据,但可以在结果集中存在 LOB 数据类型的列。但在输出 中获得 LOB 数据的唯一方式是将输入表中的列传递到输出表。通过 describe 属性 EXTFNAPIV4_DESCRIBE_COL_VALUES_SUBSET_OF_INPUT 可实现这点,详
见示例文件 tpf_blob.cxx。
• SQL SECURITY – 定义该过程是作为 INVOKER(调用 UDF 的用户)执行还是 作为 DEFINER(拥有 UDF 的用户)执行。缺省值为 DEFINER。
指定 SQL SECURITY INVOKER 后,必须对每个调用该过程的用户加以标注,因 此会使用更多内存。另外,指定 SQL SECURITY INVOKER 后,也会作为调用者
进行名称解析。因此,应注意用适合的所有者限定所有对象名称(表、过程等)。 例如,假定 user1 创建以下过程:
CREATE PROCEDURE user1.myProcedure() RESULT( columnA INT )
SQL SECURITY INVOKER BEGIN
SELECT columnA FROM table1;
END;
如果 user2 试图运行此过程,而表 user2.table1 不存在,则会产生表查寻错误。另 外,如果 user2.table1 确实存在,则使用该表而不使用预定的 user1.table1。为了防 止出现这种情况,请在语句中限定表引用(user1.table1,而不只是 table1)。
• EXTERNAL NAME – 外部 UDF 必须具有 EXTERNAL NAME 子句,以针对使用 C 语言等编程语言编写的函数定义一个接口。该函数由数据库服务器装载到其地址 空间中。
库名可包含文件扩展名,在 Windows 中通常为 .dll,在 UNIX 中通常为 .so。在没 有扩展名的情况下,该软件将附加平台特定的缺省库文件扩展名。以下是规范示 例。
CREATE PROCEDURE mystring( IN instr CHAR(255), IN input_table TABLE(A INT) )
RESULT (CHAR(255)) EXTERNAL NAME
'mystring@mylib.dll;Unix:mystring@mylib.so'
下面是使用特定于平台的缺省值编写上述 EXTERNAL NAME 子句的更简单的方 法:
CREATE PROCEDURE mystring( IN instr CHAR(255), IN input_table TABLE(A INT) )
RESULT (CHAR(255))
EXTERNAL NAME ‘mystring@mylib’
用法
(返回顶部) (第 158 页)
您使用 a_v4_extfn API 来定义表 UDF。有关不使用 a_v3_extfn 或 a_v4_extfn API 的外部过程的 CREATE PROCEDURE 语句参考信息,请参见单独主题。Java UDF 的 CREATE PROCEDURE 语句参考信息也在单独主题中详述。
CREATE PROCEDURE 语句在数据库中创建过程。要为自己创建过程,用户必须具有 CREATE PROCEDURE 系统特权。要为其他人创建过程,用户必须指定过程所有者, 并且必须具有 CREATE ANY PROCEDURE 或 CREATE ANY OBJECT 系统特权。如
果过程包含外部引用,则除上述系统特权外,用户还必须具有 CREATE EXTERNAL REFERENCE 系统特权,无论谁是过程的所有者。
如果存储过程返回一个结果集,则它不能同时设置输出参数或返回一个返回值。
从多个过程引用临时表时,如果该临时表定义不一致且高速缓存引用该表的语句,则 会出现潜在问题。在过程中引用临时表时应小心谨慎。
可通过 CREATE PROCEDURE 语句创建使用除 SQL 语言以外的其它编程语言实现的 外部表 UDF。但在创建外部 UDF 之前,请先了解表 UDF 限制。
标量参数、结果列以及 TABLE 参数列的数据类型必须是有效的 SQL 数据类型。
参数名必须符合其它数据库标识符(如列名)的规则。它们必须是有效的 SQL 数据 类型。
TPF 支持混合标量参数和单个 TABLE 参数。TABLE 参数必须为要由 UDF 处理的一 组输入行定义模式。TABLE 参数定义包括列名和列数据类型。
TABLE(c1 INT, c2 CHAR(20))
上例定义的模式包含两列 c1 和 c2,数据类型分别是 INT 和 CHAR(20)。由 UDF 处理 的每行必须是含有两个值的元组。与标量参数不同,不能为 TABLE 参数分配缺省 值。
(返回顶部) (第 158 页)
• SQL - 符合 ISO/ANSI SQL 标准。
• SAP Sybase 数据库产品 - Transact-SQL CREATE PROCEDURE 语句不同。
• SQLJ - 建议的 SQLJ1 标准中指定了 Java 结果集的语法扩展。
(返回顶部) (第 158 页)
除非创建临时过程,否则用户必须具有 CREATE PROCEDURE 系统特权才能为自己 创建 UDF。要为其他人创建 UDF,用户必须指定过程所有者,并且必须具有 CREATE ANY PROCEDURE 或 CREATE ANY OBJECT 系统特权。如果此过程包含外部引用, 则除上述系统特权外,用户还必须具有 CREATE EXTERNAL REFERENCE 系统特 权。
另请参见
• 示例文件 (第 93 页)
Sybase SQL Anywhere数据库恢复工具ReadASADB:
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具: ReadASADB。此工具支持ASA v5.0, v6.0, v7.0, v8.0, v9.0, v10.0, v11.0, v12.0, v16.0, v17.0等版本。
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具。
恢复Sybase SQL Anywhere的工具在国内处于领先水平。
Sybase SQL Anywhere数据库恢复工具ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具
- 适用于所有的SQL Anywhere版本 包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
- 适用于所有的UltraLite版本
- 能够恢复出来表结构和数据
- 能够恢复自定义数据类型
- 能够恢复存储过程等对象的语法
- 能够导出到目标数据库
- 能够导出到SQL文件并生成导入脚本
- 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
- 能够恢复未加密或者简单加密类型的数据
- 简单易用
- 限制:不支持AES加密的数据文件
SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍
Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景
各种误操作:
- 误截断表(truncate table)
- 误删除表(drop table)
- 错误的where条件误删数据
- 误删除db或log文件
- 误删除表中的字段
Sybase SQL Anywhere数据库恢复工具ReadASADB的应用场景:
1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page
7、*** ERROR *** Assertion failed: 201417 (7.0.4.3541) Invalid count or free space offset detected on a table page
8、Internal database error *** ERROR *** Assertion failed: 201425 (8.0.3.5594) Invalid count or free space offset detected on a free list page -- transaction rolled back.
9、Internal database error *** ERROR *** Assertion failed: 100702 (8.0.1.2600) Unable to modify indexes for a row referenced in rollback log -- transaction rolled back
Sybase ASE数据库恢复工具READSYBDEVICE:
一个不依赖数据库管理系统、直接从Sybase数据库设备文件上提取数据的业内领先的恢复工具!能够从损坏的Sybase ASE设备文件(.dat)上提取数据的非常规恢复工具。
Sybase ASE数据库恢复工具READSYBDEVICE的主要功能:
- 被勒索病毒加密数据文件及备份文件情况下的恢复;
- 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
- 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
- delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
- 各种Sybase内部系统表损坏、索引错误的修复;
- master数据库损坏而无法正常运行情况下的恢复;
- Sybase数据库被标记为可疑,不可用等情况的恢复;
- Sybase数据库中数据文件内部出现坏块情况下的恢复;
- Sybase数据库无数据文件但有日志文件的情况下的恢复;
- Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
- Sybase数据文件被误删除情况下的碎片提取恢复;
- 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
- 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
- Sybase数据库还原数据库出现失败情况下的恢复;
- Sybase数据库只剩下损坏的备份文件情况下的恢复。
Sybase ASE数据库恢复工具READSYBDEVICE支持的版本:
Sybase ASE 11.0.x,11.5.x,11.9.x,12.0.x,12.5.x,15.0.x,15.5.x,15.7.x,16.0.xSQL Server数据库恢复工具SQLRescue:
一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。
SQL Server数据库恢复工具SQLRescue的主要功能:
- 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
- 断电导致数据库文件损坏情况下的恢复;
- 硬盘坏道造成数据库损坏情况下的恢复;
- 数据文件内部存在坏页情况下的恢复;
- 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
- 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
- 无法读取并闩锁页sysindexes失败情况下的修复;
- 数据文件被误删除情况下的碎片提取恢复;
- 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
- master数据库损坏而无法正常运行情况下的恢复;
- 数据文件无法附加情况下的数据恢复;
- 数据库被标记为可疑,质疑,不可用等情况的恢复;
- 数据库sysobjects等系统表损坏情况下的恢复;
- 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
- 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
- 数据库被误格式化等情况下的数据库恢复;
- 日志收缩造成数据库损坏情况下的恢复;
- 仅剩损坏的备份文件情况下的恢复。
SQL Server数据库恢复工具SQLRescue技术特点:
只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。- 从数据文件中直接恢复数据
- 不能附加时直接恢复数据并生成新的数据库
- 系统表损坏的数据库修复
- 快速修复SQL 823错误、连接中断错误
SQL Server数据库恢复工具SQLRescue支持的版本:
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。+-------------------------------------华丽的分割线-------------------------------------------------------------------------