< ------- ------的PeopleCode>
您好,
我有一个SQL查询,我尝试使用SQLEXEC和SQL.fetch()执行但问题是,当我将值传递给参数(:1,:2 ...)时,它不会返回但是当我对查询本身的where子句中的值进行硬编码时,它会检索正确的值。 有人可以帮忙吗?
我的查询类似于以下示例查询: 从PS_rec1中选择*,其中emplid =:1和plan_type =:2
在我对值进行硬编码之前,它不返回任何数据。
我检查了后端的值,有些数据是要提取的。此外,相同的查询在TOAD中运行时检索数据。
答案 0 :(得分:0)
您是否尝试在SQL语句中使用它们之前将绑定输出到日志文件?
如果绑定不起作用,但是文字是,那么也许你的绑定不包含你期望它们的值。
您还可以尝试显式设置绑定到您在SQL语句之前所期望的值。这将证明你通过绑定的方式是正常的。
答案 1 :(得分:0)
它需要对同一记录进行另一次更新才能获取在SQL exec中获取的值。 我不确定问题是什么,但我猜可能是前一次更新即使在显式提交后也没有将更改写入数据库。
答案 2 :(得分:0)
好的,您需要在问题中输入您的确切SQLExec语句。
但是,你真的在SQLExec中有“Select * ...”吗?您的表中有多少列?既然你提到了where子句,那么你的陈述是
SQLExec("select * from PS_rec where emplid=:1 and plan_type=:2", &var1, &var2, &vartocontainthewholerow);
哪个适用于SQL工具(toad),但可能无法在AE或任何类型的Peoplecode程序中使用。
现在如果你的表有三列,你应该没有这样的东西:
SQLExec("select emplid, plan_type, column3 from PS_rec where emplid = :1 and plan_type=:2", &emplidIn, &plan_typeIn, &emplidOut, &plan_typeOut, &column3Out);
请注意,表格中有三列emplid和plan_type是其中两列,您需要列出所需的所有列,而不是星号'*'。有点愚蠢地选择emplid和plan_type。