Oracle PL/SQL将参数作为隐藏输入传递给另一个过程

Oracle PL/SQL将参数作为隐藏输入传递给另一个过程,oracle,plsql,Oracle,Plsql,我是PL/SQL新手 我有一个由PL/SQL过程生成的HTML表单,类似于: CREATE OR REPLACE PROCEDURE SAMPLE_P (I_CUSTOMER_ID in varchar2, I_PRODUCT_CODE in varchar2) AS --var declarations here... htp.p('html head body tags here...'); htp.p('<form action="SAMPLE_B" method="pos

我是PL/SQL新手

我有一个由PL/SQL过程生成的HTML表单,类似于:

CREATE OR REPLACE PROCEDURE SAMPLE_P 
(I_CUSTOMER_ID in varchar2,
I_PRODUCT_CODE in varchar2)

AS
--var declarations here...
 htp.p('html head body tags here...');

 htp.p('<form action="SAMPLE_B" method="post" name="sample_form" enctype="text/plain">');

 htp.p('<input type="hidden" value="'||i_customer_id||'" name="i_customer_id">
        <input type="hidden" value="'||i_product_code||'" name="i_product_code">');

 htp.p('submit button and all the ending html tags here');
我的示例_b过程类似于:

 create or replace PROCEDURE SAMPLE_B(
 i_customer_id in varchar2,
 i_product_code IN VARCHAR2)
 AS

 BEGIN
 htp.p('<html><head></head><body><h1>cust id = '||i_customer_id||'</h1><br><h1>product 
 ='||i_product_code||'</h1> <br> </body><html>');

 END SAMPLE_B;

此代码的问题是,当我单击submit按钮时,我会看到一个错误页面,指出表单中不存在I_product_代码。当我在示例b中将I_product_code默认值设置为null时,我没有得到任何错误,但在我新生成的页面中,cust id等于客户id值,后跟产品代码值,并且产品代码为null。看起来不是单个值而是第一个变量中的所有值,第二个变量没有发送任何内容。我在这里遗漏了什么?

原来问题是表单属性enctype,当该属性被删除时,问题就消失了。

请注意,为了缩短代码,省略了一些代码行。文档中明确提到了这样的内容。您是否查看了生成的HTML以查看其结构是否如您所期望的那样-例如,您在某些地方没有不匹配的引号?有没有什么原因让你用手工操作而不是使用?我已经检查了很多次我的HTML代码,看看我是否犯了错误,但没有结果。另外,我使用的是SQLDeveloper,它会突出显示任何明显的错误,但事实并非如此。据我所知,htp.Formhidden只是一个生成隐藏输入的函数,我可以尝试一下,但如果这能解决我的问题,我会非常惊讶。如果你的代码是正确的,那么它不会有任何区别,不;但正如引用等一样,它可以帮助避免错误。我同意,在这一点上改变不会有任何区别。除非你重写整个过程来使用这些工具。另外,SQLDeveloper不会警告您字符串中的双引号不匹配,这就是我的意思。在生成的代码中,这种问题应该相当明显。当然,我们看不到。。。