Javascript 如何在select查询中分配字符串变量

Javascript 如何在select查询中分配字符串变量,javascript,sql,oracle,business-process-management,Javascript,Sql,Oracle,Business Process Management,ho在SQL Select查询中添加字符串变量。 “tw.local.subBarCode”是字符串变量,“tw.local.caseID”也是字符串变量 例如:在变量中有一些值 案例ID=15232,子代码=ODDV-1803-015232-HL01 tw.local.sql=“选择CS.ORIGINALCHECK\u ID作为checkId,”+ “CS.CHECKTYPE_ID作为checkTypeId,”+ “CS.CHECKTYPE_ID作为组件ID,”+ “CT.NAME作为组件名

ho在SQL Select查询中添加字符串变量。 “tw.local.subBarCode”是字符串变量,“tw.local.caseID”也是字符串变量

例如:在变量中有一些值

案例ID=15232,子代码=ODDV-1803-015232-HL01

tw.local.sql=“选择CS.ORIGINALCHECK\u ID作为checkId,”+
“CS.CHECKTYPE_ID作为checkTypeId,”+
“CS.CHECKTYPE_ID作为组件ID,”+
“CT.NAME作为组件名”+
“来自检查\u摘要CS内部连接检查类型CT”+
“在CT.ID=CS.CHECKTYPE\u ID上”+

其中CS.ORIGINALCHECK_ID=“+tw.local.subBarCode+”和CS.CASE_ID=“+tw.local.caseID+”您是否尝试解码参数中的任何内容


请看这篇文章:

根据您的代码片段和您标记了“BPM”的事实,您似乎在问关于在产品IBM BPM中执行SQL的问题。虽然您没有调用产品的版本,但我会假设它是7.5或更高版本

假设所有这些都是正确的,您应该使用系统数据工具包中的服务“SQLExecuteStatement”执行查询。您正在尝试创建完整的SQL语句,而不是利用参数化查询功能(这将实现推荐的功能)

您需要修改SQL以便它可以使用参数化选项。代码应该类似于-

tw.local.sql="select CS.ORIGINALCHECK_ID AS checkId, "+
"CS.CHECKTYPE_ID AS checkTypeId, "+
"CS.CHECKTYPE_ID AS componentID, "+
"CT.NAME AS componentName "+
"from CHECK_SUMMARY CS INNER JOIN CHECKTYPE CT "+
"ON CT.ID=CS.CHECKTYPE_ID "+
"where CS.ORIGINALCHECK_ID=? and CS.CASE_ID=?";
然后,您可以使用如下内容设置参数值-

tw.local.parameters = new tw.object.listOf.SQLParameter();
tw.local.parameters[0] = new tw.object.SQLParameter();
tw.local.parameters[0].value = tw.local.subBarCode;
tw.local.parameters[0].type = 'VARCHAR'; //Note: Guessing here.
tw.local.parameters[1] = new tw.object.SQLParameter();
tw.local.parameters[1].value = tw.local.caseID;
tw.local.parameters[1].type = 'INTEGER';
然后将它们都交给SQL执行语句服务,一切都应该正常工作。您不受SQL注入的影响,并且如果您的变量中有一个在字符串中表示“a”,则不会神奇地中断


有时,根据底层JDBC驱动程序的默认行为,您可以在不指定类型的情况下离开。SQLParameter业务对象记录该类型的可能输入。

不要使用连接,因为它非常不安全(SQL注入攻击)。使用参数化SQL,即对每个参数使用问号(?),然后应用参数值。我还要注意,tw.local.SQL变量实际上应该使用“scriptlet”来设置,而不是编写JS代码。那样的话,可读性要大得多。