ALTER PROCEDURE 语句(SQL - 外部过程)(已弃用)
ALTER PROCEDURE 语句用于更改当前服务器上外部 SQL 程序的描述。
外部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,则在重新评估过程定义时,该过程将被识别为系统定义的过程。
权限设置:
如果语句嵌入到应用程序中,权限集就是软件包所有者所拥有的权限。
- 特权集包括系统管理员权限
- 特权集包括SYSCTRL权限
- 该进程的SQL授权ID具有对模式进行ALTERIN操作的权限
用于更改过程定义的 SQL 授权 ID 必须具有当前定义运行该过程的 WLM 环境所需的相应权限。 此授权来自外部安全产品,例如 RACF®。更多信息,请参阅在WLM环境中管理创建存储过程的授权。
ALTER PROCEDURE(SQL - 外部)语法
选项列表 :(可任意选择选项。 请至少选择一项。 请不要重复选择同一选项。)
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 不验证程序代码是否符合规格要求 DETERMINISTIC 或 NOT DETERMINISTIC。
- MODIFIES SQL DATA、 READS SQL DATA或 CONTAINS SQL
- 指定此例程可以执行或调用的SQL语句和嵌套例程的分类。 数据库管理员负责验证由程序发出的SQL语句以及由程序在本地调用的所有例程是否符合本规范;当调用嵌套的远程例程时,不会进行验证。 有关每条语句的分类,请参阅例程的SQL语句数据访问分类。 任何程序不支持的语句都会返回错误。
- MODIFIES SQL DATA
- 指定该过程可以执行任何SQL语句,但不支持过程不支持的语句。
- READS SQL DATA
- 指定该过程可以执行带有数据访问指示的语句,包括读取SQL数据或包含SQL。 该程序无法执行修改数据的SQL语句。
- CONTAINS SQL
- 指定该过程只能执行访问指示为CONTAINS SQL的SQL语句。 该程序无法执行读取或修改数据的语句。
- NO COLLID 或 COLLID 收藏编号
- 标识执行程序时使用的程序包集合。 这是与程序相关的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
- 指定在进入例程时如何设置特殊寄存器。
- STOP AFTER SYSTEM DEFAULT FAILURES, STOP AFTER nn FAILURES或 CONTINUE 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 - 外部)示例
ALTER PROCEDURE UPDATE_SALARY_1
COMMIT ON RETURN YES
WLM ENVIRONMENT WLMSQLP;