gpt4 book ai didi

javascript - 如何在选择查询中分配字符串变量

转载 作者:行者123 更新时间:2023-12-03 02:10:13 25 4
gpt4 key购买 nike

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

示例:变量中有一些值

CASE_ID=15232 and SUBBARCODE=ODDV-1803-015232-HL01.

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="+tw.local.subBarCode+" and CS.CASE_ID="+tw.local.caseID+"";

如下所示,当我调试它时,它在我的选择查询中获取变量。

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='ODDV-1803-015232-HL01''
and CS.CASE_ID=15232

请任何人帮助我解决这个问题。

调试时我需要如下查询。

 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='ODDV-1803-015232-HL01'
and CS.CASE_ID=15232

最佳答案

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

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

您需要修改 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 注入(inject)的影响,并且如果您的变量之一在字符串中包含 ' ,也不会神奇地破坏。

有时您无需指定类型即可摆脱困境,具体取决于底层 JDBC 驱动程序的默认行为。 SQLParameter 业务对象记录了该类型的可能输入。

关于javascript - 如何在选择查询中分配字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49611300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com