stored-procedures - SPParameters 不匹配存储过程
问题描述
我已经在 Logi Analytics DevNet 中发布了这个问题,但那里是一个墓地,我希望我能在这里得到答案。我正在使用 Logi Info v12.2.116。
我正在使用存储过程来获取数据以填充我的报告。存储过程调用一个 RPG 程序。我已经这样做了很多次,但是今天当我创建一个新的存储过程,一个新的报告时,由于某种原因参数不匹配。我也重新启动了Logi...有时它在重新启动之前不会拾取新的存储过程,但这也不起作用。我以前从未见过这个错误:
设置或注册的参数值数量与参数数量不匹配
这是我的参数的代码:
<DataLayer Type="SP" Command="myStoredProcedure">
<SPParameters NullValue="'">
<SPParameter SPParamDirection="Input" ID="GAct" SPParamSize="2" SPParamType="dt-129" Value="RE" />
<SPParameter SPParamDirection="Input" ID="rsDetail" SPParamType="dt-129" Value="N" SPParamSize="1" />
<SPParameter SPParamDirection="Input" ID="rsFromDate" SPParamSize="10" SPParamType="dt-7" Value="@ Request.paramFromDate~" />
<SPParameter SPParamDirection="Input" ID="rsToDate" SPParamSize="10" SPParamType="dt-7" Value="@ Request.paramToDate~" />
<SPParameter SPParamDirection="Input" ID="rsDepts" SPParamSize="256" SPParamType="dt-129" Value="@ Request.paramAllDepartments~" />
</SPParameters>
这是存储过程的定义:
1 IN GACT CHARACTER 2 No default
2 IN RSDETAIL CHARACTER 1 No default
3 IN RSFROMDATE DATE No default
4 IN RSTODATE DATE No default
5 IN RSDEPTS CHARACTER 256 No default
到底是什么导致了这个问题?是的,我正在连接到同一个分区/库。是的,在 Logi 外部调用时,程序和存储过程工作得非常好。是的,我正在调用正确的存储过程。
解决方案
改变:
<SPParameter SPParamDirection="Input" ID="GAct" SPParamSize="2" SPParamType="dt-129" Value="RE" />
至:
<SPParameter SPParamDirection="Input" ID="GAct" SPParamSize="2" SPParamType="dt-200" Value="RE" />
Char 通常被认为是单个字符,很可能是导致您的问题的原因。此外,不相关,但我通常只在我的所有 SPParams 上使用大小 0 以避免截断问题。
推荐阅读
- ios - 应用程序可以在模拟器上完美运行,但不能在物理设备上运行 [在 iOS 13.3.1 上]
- javascript - React 收到一个非布尔属性的 `true`
- javascript - 我正在根据字符串数组过滤数组元素,但是,我正在将字符串数组转换为对象数组。我需要另一个循环吗?
- typescript - 如何扩展 vuejs 组合 API 脚本?
- pandas - 每行熊猫数据框的“value_counts”
- angular8 - 无法将 html 文件调用到 Angular 8
- machine-learning - 使用 K-cross 验证训练准确性后的所有 NaN 值
- apache-spark - Spark 写入具有自定义扩展名的文件
- java - Java和spring中的同步和异步调用
- android - 在 Android 应用中从用户那里获取位置权限