ALTER PROCEDURE 语句(SQL - 外部过程)(已弃用)

ALTER PROCEDURE 语句用于更改当前服务器上外部 SQL 程序的描述。

Deprecated function : 更改开始外部SQL程序已过时,且无法像本地SQL程序那样获得全面支持。 为了获得最佳效果,请创建本机SQL程序。 更多信息,请参阅创建本机SQL程序将外部SQL程序迁移为本机SQL程序更改结束

调用ALTER PROCEDURE(SQL - 外部)

此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL

ALTER PROCEDURE(SQL - 外部)授权

以下定义的特权套装必须至少包含以下一项:

  • 存储过程的所有权
  • 架构上的ALTERIN权限
  • SYSADM 或 SYSCTRL 权限
  • 系统 DBADM
  • 更改开始安装 SYSOPR 权限(当前进程的 SQLID 设置为 SYSINSTL 时)更改结束

与模式名称匹配的授权ID隐式拥有该模式的ALTERIN权限。

更改开始如果用于更改过程的授权ID具有安装SYSADM权限或安装SYSOPR权限,并且当前SQLID设置为SYSINSTL,则在重新评估过程定义时,该过程将被识别为系统定义的过程。更改结束

权限设置:

如果语句嵌入到应用程序中,权限集就是软件包所有者所拥有的权限。

如果语句是动态准备的,则权限集是指由进程的SQL授权ID所持有的权限集。 指定的例程名称可以包含模式名称(限定符)。 但是,如果架构名称与这些 SQL 授权 ID 中的任何一个都不相同,则必须满足以下条件之一:
  1. 特权集包括系统管理员权限
  2. 特权集包括SYSCTRL权限
  3. 该进程的SQL授权ID具有对模式进行ALTERIN操作的权限

用于更改过程定义的 SQL 授权 ID 必须具有当前定义运行该过程的 WLM 环境所需的相应权限。 此授权来自外部安全产品,例如 RACF®。更多信息,请参阅在WLM环境中管理创建存储过程的授权

ALTER PROCEDURE(SQL - 外部)语法

阅读语法图跳过可视化语法图ALTER PROCEDURE程序名option-list

选项列表 :(可任意选择选项。 请至少选择一项。 请不要重复选择同一选项。)

阅读语法图跳过可视化语法图DYNAMIC RESULT SETS整数EXTERNAL NAME 外部程序名称标识 NOT DETERMINISTICDETERMINISTICMODIFIES SQL DATAREADS SQL DATACONTAINS SQLNO COLLIDCOLLID收藏-IDWLM ENVIRONMENT 名称(名称,*) ASUTIME NO LIMITLIMIT整数 STAY RESIDENT NOYES PROGRAM TYPE SUBMAIN SECURITY DB2USERDEFINER COMMIT ON RETURN NOYES RUN OPTIONS运行时选项INHERIT SPECIAL REGISTERSDEFAULT SPECIAL REGISTERSSTOP AFTER SYSTEM DEFAULT FAILURESSTOP AFTER整数FAILURESCONTINUE AFTER FAILURES

ALTER PROCEDURE(SQL - 外部)描述

程序名
标识要更改的存储过程。
DYNAMIC RESULT SETS 整数
指定程序可以返回的查询结果集的最大数量。 数值必须在0-32767之间。
EXTERNAL NAME 外部程序名称标识符
在 SQL CALL 语句中指定存储过程名称时,为程序指定 MVS 加载模块名称。 该值必须符合 MVS 载入模块的命名约定:该值必须小于或等于 8 字节,必须符合普通标识符的规则,但不得包含下划线。
NOT DETERMINISTIC 或者 DETERMINISTIC
指定每次调用具有相同输入和输出参数的程序时,程序是否返回相同的结果。
NOT DETERMINISTIC
即使数据库中的引用数据没有变化,每次调用该过程并使用相同的IN和INOUT参数时,结果可能不同。
DETERMINISTIC
如果数据库中的引用数据没有变化,那么每次调用该过程并使用相同的IN和INOUT参数时,该过程都会返回相同的结果。

Db2 不验证程序代码是否符合规格要求 DETERMINISTICNOT DETERMINISTIC

MODIFIES SQL DATAREADS SQL DATACONTAINS SQL
指定此例程可以执行或调用的SQL语句和嵌套例程的分类。 数据库管理员负责验证由程序发出的SQL语句以及由程序在本地调用的所有例程是否符合本规范;当调用嵌套的远程例程时,不会进行验证。 有关每条语句的分类,请参阅例程的SQL语句数据访问分类任何程序不支持的语句都会返回错误。
MODIFIES SQL DATA
指定该过程可以执行任何SQL语句,但不支持过程不支持的语句。
READS SQL DATA
指定该过程可以执行带有数据访问指示的语句,包括读取SQL数据或包含SQL。 该程序无法执行修改数据的SQL语句。
CONTAINS SQL
指定该过程只能执行访问指示为CONTAINS SQL的SQL语句。 该程序无法执行读取或修改数据的语句。
NO COLLIDCOLLID 收藏编号
标识执行程序时使用的程序包集合。 这是与程序相关的DBRM绑定到其中的包集合。
NO COLLID
表示该程序的包集合与调用程序的包集合相同。 如果调用程序不使用包,则 Db2 会依次使用CURRENT PACKAGE PATH特殊寄存器、CURRENT PACKAGESET特殊寄存器或 PKLIST 绑定选项来解析包。 有关 Db2 如何使用这三项的详细信息,请参阅绑定应用计划中有关打包分辨率的信息。
COLLID 收藏-ID
指定程序的包集合。
WLM ENVIRONMENT 名字 (名字 ,*)
Db2 当存储过程地址空间由WLM建立时,标识运行该过程的WLM(工作负载管理器)环境。 WLM环境名称是一个SQL标识符。
名字
指定运行该过程所需的WLM环境。 如果另一个常规调用该过程,并且该调用常规在未与指定 WLM 环境关联的地址空间中运行,则 Db2 会将过程请求路由到不同的地址空间。
(名字 ,*)
当SQL应用程序直接调用一个过程时 ,name 指定了存储过程运行的WLM环境。

如果另一个例程调用该过程,则该过程将在调用例程使用的相同WLM环境中运行。

您必须拥有WLM环境的相应权限。

ASUTIME
以CPU服务单元为单位,指定单个过程调用可以运行的处理器总时间。 该值与资源限制规格表的 ASUTIME 列无关。

当您调试一个程序时,如果程序陷入循环,设置一个限制可能会有所帮助。 有关服务单元的信息,请参阅 z/OS MVS Initialization and Tuning Guide

NO LIMIT
该程序可以运行的CPU服务单元数量没有限制。
LIMIT 整数
CPU服务单元的数量限制为1-2147483647之间的正整数。 如果程序使用的服务单元数量超过指定值, Db2 将取消该程序。 在程序中并行任务所消耗的CPU周期不计入指定的ASUTIME LIMIT。
STAY RESIDENT
指定当程序结束时,用于该程序的加载模块是否仍保留在内存中。
NO
程序结束后,负载模块将从内存中删除。
YES
在程序结束后,负载模块仍保留在内存中。
PROGRAM TYPE
指定程序是作为主程序还是子程序运行。 如果更改了程序类型,则需要重新编译存储过程,以便更改生效。
SUB
该过程作为子程序运行。
MAIN
该程序作为主程序运行。
SECURITY
指定程序与外部安全产品(如 RACF )的交互方式,以控制对非SQL资源的访问。
DB2
该程序不需要特殊的外部安全环境。 如果程序访问外部安全产品保护的资源,则使用与运行程序的地址空间关联的授权ID进行访问。
USER
应为该程序建立一个外部安全环境。 如果程序访问外部安全产品所保护的资源,则使用调用该程序的用户授权ID进行访问。
DEFINER
应为该程序建立一个外部安全环境。 如果程序访问外部安全产品所保护的资源,则使用程序所有者的授权ID进行访问。
RUN OPTIONS 运行时选项
指定用于存储过程的 Language Environment® 运行时选项。 您必须将运行时选项指定为不超过 254 字节的字符串。 如果不指定 RUN OPTIONS 或传递空字符串, Db2 不会向 Language Environment 传递任何运行时选项,而 Language Environment 会使用其安装默认值。

有关 Language Environment 运行时选项的说明,请参阅 Language Environment Programming Reference

COMMIT ON RETURN
指示 Db2 是否在程序返回时立即提交交易。
NO
Db2 当程序返回时,不会发出提交。
YES
Db2 当程序返回时,如果以下语句为真,则发出提交:
  • CALL语句返回正SQLCODE。
  • 程序没有处于必须中止的状态。

落实操作包括由调用应用程序进程和该过程执行的工作。

如果该过程返回结果集,那么与结果集相关联的游标必须已定义为 WITH HOLD,以便在落实后可用。

INHERIT SPECIAL REGISTERS 或者 DEFAULT SPECIAL REGISTERS
指定在进入例程时如何设置特殊寄存器。
INHERIT SPECIAL REGISTERS
指定特殊寄存器应根据表 1 程序中特殊寄存器特性表所列规则继承。
DEFAULT SPECIAL REGISTERS
指定将特殊寄存器初始化为默认值, 如表 1 程序中特殊寄存器特性表中的规则所示。
STOP AFTER SYSTEM DEFAULT FAILURESSTOP AFTER nn FAILURESCONTINUE AFTER FAILURE
指定程序在出现故障后是否停止。
STOP AFTER SYSTEM DEFAULT FAILURES
指定在安装面板 DSNTIPX 上,当出现 MAX ABEND COUNT 字段值所指示的故障次数时,应将此例程置于停止状态。
STOP AFTER nn FAILURES
规定在发生nn次故障后,该程序应置于停止状态。 值nn 可以是1-32767之间的整数。
CONTINUE AFTER FAILURES
规定在任何故障发生后,该程序不应处于停止状态。

ALTER PROCEDURE(SQL - 外部)的注释

转换为本地SQL程序:
您不能将外部SQL程序更改为本机SQL程序。 您可以使用DROP语句删除要更改的程序,并使用CREATE PROCEDURE语句创建一个定义类似的本机SQL程序。 或者,您可以使用不同的架构创建一个本机 SQL 程序。

更多信息,请参阅将外部SQL程序迁移为本机SQL程序

包裹失效:
当SQL程序被修改时,所有引用该程序的包都会被标记为无效。
其他语法和同义词:

为了与 Db2 的早期版本或 Db2 UDB系列中的其他产品兼容, Db2 支持以下关键词:

  • 结果集、结果集和动态结果集是 DYNAMIC RESULT SETS
  • VARIANT作为同义词 NOT DETERMINISTIC
  • NOT VARIANT作为同义词 DETERMINISTIC

ALTER PROCEDURE(SQL - 外部)示例

以下语句修改了SQL过程的定义,以便在SQL过程返回时提交SQL更改,并在名为WLMSQLP的WLM环境中运行SQL过程。
ALTER PROCEDURE UPDATE_SALARY_1
 COMMIT ON RETURN YES
 WLM ENVIRONMENT WLMSQLP;