You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Web PL/SQL中HTP.formopen调用报PLS-00306错误及传参疑问

问题分析与解决方案

报错原因解析

你遇到的ORA-06550和PLS-00306错误,核心原因在于FS_P_ProcessRequest过程的参数定义与HTTP调用方式不兼容:

  • 过程中包含II、KK、MM、NN四个IN OUT类型的参数,且没有设置默认值;
  • 通过HTP.formopen发起的HTTP表单请求,只能传递IN类型的参数,无法处理IN OUT/OUT类型的参数——这类参数需要过程调用时传入可修改的变量,而HTTP请求无法提供这类变量,导致参数数量/类型不匹配,触发报错。

参数传递方法

1. 适配过程定义(必须步骤)

首先需要调整FS_P_ProcessRequest的参数逻辑:

  • 如果IN OUT参数是过程内部逻辑使用,无需从前端接收,可改为过程内部声明的变量,移除这类参数的对外暴露;
  • 若必须保留IN OUT参数,可拆分出一个专门用于HTTP调用的入口过程,仅包含IN类型参数(带默认值),在该入口过程内部初始化IN OUT参数所需的变量,再调用原FS_P_ProcessRequest过程。

2. 传递IN类型参数的方式

对于过程中的IN类型参数(如AA、BB等带默认值的参数),可以通过表单隐藏域传递,示例代码如下:

-- 打开表单
HTP.formopen(twbkwbis.f_cgibin || 'bzskaold.FS_P_ProcessRequest');
-- 传递参数AA,值为'xxx'
HTP.formhidden('AA', 'xxx');
-- 传递参数BB,值为'yyy'
HTP.formhidden('BB', 'yyy');
-- 其他表单元素(如提交按钮)
HTP.formsubmit('submit', '提交');
-- 关闭表单
HTP.formclose;

表单提交时,这些隐藏域的参数会自动以HTTP请求参数的形式传递给过程,Oracle会根据参数名自动映射到对应的IN参数上。

附用户提供的相关代码

HTP.formopen (twbkwbis.f_cgibin || 'bzskaold.FS_P_ProcessRequest');

-------

TYPE varchar2_hashtab IS TABLE OF VARCHAR2(500) INDEX BY VARCHAR2(5);
TYPE varchar2_tabtype IS TABLE OF VARCHAR2(26) INDEX BY BINARY_INTEGER;

var_empty_hash  varchar2_hashtab;
var_empty_table varchar2_tabtype;

PROCEDURE FS_P_ProcessRequest
(
  AA   IN      VARCHAR2 DEFAULT NULL,
  BB   IN      VARCHAR2 DEFAULT NULL,
  CC   IN      VARCHAR2 DEFAULT NULL,
  DD   IN      VARCHAR2 DEFAULT NULL,
  EE   IN      VARCHAR2 DEFAULT NULL,
  FF   IN      VARCHAR2 DEFAULT NULL,
  GG   IN      VARCHAR2 DEFAULT NULL,
  HH   IN      VARCHAR2 DEFAULT NULL,
  II   IN OUT  bzskaold.varchar2_hashtab,
  JJ   IN      bzskaold.varchar2_tabtype DEFAULT var_empty_table,
  KK   IN OUT  bzskaold.varchar2_hashtab,
  LL   IN      bzskaold.varchar2_tabtype DEFAULT var_empty_table,
  MM   IN OUT  bzskaold.varchar2_hashtab,
  NN   IN OUT  bzskaold.varchar2_hashtab,
  OO   IN      VARCHAR2 DEFAULT NULL,
  PP   IN      VARCHAR2 DEFAULT NULL,
  QQ   IN      VARCHAR2 DEFAULT NULL,
  RR   IN      VARCHAR2 DEFAULT NULL
);

内容的提问来源于stack exchange,提问作者selpatS20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 06:45:41