如何将 SQL 查询结果分配给变量?您好!我是 JMP/JSL 脚本的新手,在理解方面遇到了一些困难。我觉得我想做的事情应该很简单,但似乎没有任何事情像我预期的那样工作,谷歌搜索让我失望了。
我想要做的事情:我有一个简单的存储过程,它仅根据我传递给它的几个参数从我们的 SQL 数据库返回一个控制限值。然后我尝试将该值分配给列的 Levey Jennings 控制限值。下面的代码是我所能得到的。
此代码输出一个包含我想要的值的表格。
// Get limit value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
vLCL = open database(
"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
"cus_sp_taglimits
@LimitType = " || LimitType || ",
@LimitLevel = " || LimitLevel || ",
@utagid = '" || utagID || "'"
);然后我尝试使用“vLCL”的值并将其应用于不同的表列属性。
// Change column property
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( vLCL ) )}
);当我用数字替换“vLCL”时,上述脚本运行正常。
我认为我陷入困境的地方是,如何使用我的 SQL 结果作为实际变量?有没有办法将值直接查询到变量中,而不是将其拉入新表?
任何帮助都将不胜感激!提前谢谢您!
-简
自动化和脚本回复:如何将 SQL 查询结果分配给变量?如果您的 vLCL 有您要查找的内容,则只需对其进行评估,这里有一个关于如何使用如下列属性进行评估的选项
Eval(EvalExpr(
Data Table("testTable"):testColumn << Set Property(
"Control Limits",
{Levey Jennings(LCL(Expr(vLCL)))}
);
));
如果你不确定 vLCL 中存储了什么,你可以添加
show(vLCL);
查询后验证它是否具有您要查找的内容
回复:如何将 SQL 查询结果分配给变量?感谢您的回复!我尝试将其编辑为您分享的内容,当我执行“显示”时,我得到了以下信息:
vLCL = DataTable("SQL 结果 799");
所以我认为我的问题是我实际上没有将查询结果作为数值分配给 vLCL?你知道我该如何纠正这个问题吗?
再次感谢!!
简
回复:如何将 SQL 查询结果分配给变量?取决于 vLCL 所保存的结果表。数据表下标可能就足够了,有时您可能需要将其与 << get rows where 结合使用。
下面是数据表下标的最基本示例,它从 LSL 和 USL 列的第一行中获取值
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("LSL", Numeric, "Continuous", Format("Best", 12), Set Values([1])),
New Column("USL", Numeric, "Continuous", Format("Best", 12), Set Values([2]))
);
my_lsl = dt[1, "LSL"];
my_usl = dt[1, "USL"];
数据表下标
回复:如何将 SQL 查询结果分配给变量?噢天哪谢谢你这正是我所缺少的!
我将代码调整如下并且运行完美!
// Get limit value -- returns a new table with a single value
LimitType = "Control";
LimitLevel = "Lower";
utagID = "6720";
tblLCL = open database(
"Driver={SQL Server};Server=FC-SQL-P\PROD;Database=ctc_config;Trusted_Connection=yes",
"cus_sp_taglimits
@LimitType = " || LimitType || ",
@LimitLevel = " || LimitLevel || ",
@utagid = '" || utagID || "'"
);
//assign table value to variable
vLCL = tblLCL[1,1];
// Change column property
Eval(EvalExpr(
Data Table( "testTable" ):testColumn << Set Property(
"Control Limits",
{Levey Jennings( LCL( Expr(vLCL) ) )}
);
));谢谢谢谢谢谢!
-简