在 PL/SQL 动态内容中将变量传递给 htp.p

Passing variable to htp.p in a PL/SQL Dynamic Content

我正在尝试根据数据库列和 UI 组件上的复选框在变量中传递一个值以进行验证。 注意:Max_Set 是保存数据库列中要针对 numberOfChecked 项目进行验证的最大数量的变量。但是,当我将 Max_Set 传递给 htp.p 脚本时,我无法使用变量中的值。

select num into Max_Set from table where column_name = name;

htp.p('<script type="text/javascript">');  
htp.p('function ValidateSelection1()  
{  
 var checkboxes = document.getElementsByName("student");  
 var numberOfCheckedItems = 0; 
 var Max_num = Max_Set
  
for(var i = 0; i < checkboxes.length; i++)  
{  
    if(checkboxes[i].checked)  
        numberOfCheckedItems++;  
}  
if(numberOfCheckedItems > Max_num)  
{  
    alert("You cant select more than the required number for this SL Site!");  
    return false;  
}  
}');  
htp.p('</script>');

如何将 Max_Set 中的值用于 htp.p 脚本而不将其视为字符串?

在您的 pl/sql 代码中,htp 调用中的所有内容都被视为字符串。如果你想使用在 pl/sql 中声明的变量,你可以连接 (||) 将它们放在一起。我用“l_max_set”替换了“Max_Set”,以表明这是一个本地 pl/sql 变量而不是 javascript 变量,initcap 倾向于使它看起来像 javascript.

select num into l_max_set from table where column_name = name;

htp.p('<script type="text/javascript">');  
htp.p('function ValidateSelection1()  
{  
 var checkboxes = document.getElementsByName("student");  
 var numberOfCheckedItems = 0; 
 var Max_num = '||l_max_set||';
  
for(var i = 0; i < checkboxes.length; i++)  
{  
    if(checkboxes[i].checked)  
        numberOfCheckedItems++;  
}  
if(numberOfCheckedItems > Max_num)  
{  
    alert("You cant select more than the required number for this SL Site!");  
    return false;  
}  
}');  
htp.p('</script>');