我从window.opener.location.href调用plsql过程,我想将一个数组作为参数传递给这个过程。
window.opener.location.href="dt_bulk_test_pkg.pc_bulk_test?ps="+frmresult.ps.value+
"&p_step="+frmresult.p_step.value+
"&p_year="+frmresult.p_year.value+
"&p_quarter="+frmresult.p_quarter.value+
"&p_diagnostic_type="+frmresult.p_diagnostic_type.value+
"&p_overwrite="+frmresult.p_overwrite.value+
"&p_company_id="+v_comp_id;
v_comp_id
是一个数组。
答案 0 :(得分:1)
如何精确地表示数组取决于服务器端语言/ web框架,但是一种相当标准的方法是jQuery的$.param方法。例如,在这个网站上打开控制台,我可以这样做:
> $.param({example: [1,2,3]})
"example%5B%5D=1&example%5B%5D=2&example%5B%5D=3"
警告语。
答案 1 :(得分:1)
我知道这是一个老线程,但我降落在这里,所以我猜其他人会。
很有可能通过URL将数组传递给PL / SQL,并且明确支持它,而不是一个狡猾的黑客。 Link to Oracle doc
将PL / SQL输入参数声明为varchar2表。然后在URL中重复传递相同的参数名称。
1 /示例PL / SQL源:
CREATE OR REPLACE PROCEDURE test_array(
p IN dbms_sql.varchar2_table )
AS
BEGIN
FOR i IN p.FIRST .. p.LAST
LOOP
htp.p(p(i)||'<br>');
END LOOP;
END test_array;
* 2 /调用它的示例网址: - 将XXXXXXXXXXXXXX替换为您自己的设置*
http://XXXXXXXXXXXXXX/test_array?p=first ele&p=second ele
3 /输出
first ele
second ele
您可以根据需要传入任意数量的元素,本例中我只使用了2个。
如果您的数据类型不是varchar2,请将其从URL中捕获为varchar2,并将它们转换为pl / sql内的数字等。