我有一个存储过程,其中我正在使用CSSID 65535传递一个值(来自CHARACTER(13) ),并尝试通过它返回一个ID
具体步骤如下:
BEGIN
DECLARE GET_ID_BY_WEB_IDENTIFIER_C1 CURSOR WITH RETURN FOR
SELECT ID FROM TABLE . ITEMT WHERE WEB_IDENTIFIER = P_WEB_IDENTIFIER ;
OPEN GET_ID_BY_WEB_IDENTIFIER_C1 ;
END 并且参数P_WEB_IDENTIFIER是具有匹配的cssid的字符(26)。我也试过了,它是一个角色13,也有同样的效果。
当我调用这个的时候:
CALL PROGRAM . GET_ID_BY_WEB_IDENTIFIER (x'0213725501A421B9A457123001')我拿回了我的ID,但当我像这样调用(在生产中通过web调用它)时:
CALL PROGRAM . GET_ID_BY_WEB_IDENTIFIER ('0213725501A421B9A457123001')我得到一个转换错误
如何确保只传递字符串'0213725501A421B9A457123001‘就能以这种方式返回我的ID?
发布于 2020-02-22 06:49:05
此x'0213725501A421B9A457123001'是十六进制字符串文字。
粗略地看一下,它主要表示不可打印的字符。
'0213725501A421B9A457123001'是一个实际的字符串。
在db2上,它的十六进制等效值是x'F0F2F1F3F7F2F5F5F0F1C1F4F2F1C2F9C1F4F5F7F1F2F3F0F0F1'
很大的区别..。
您的web应用程序还需要将其作为十六进制文字传递,请确保将存储的proc parm定义为CCSID 65535 (二进制/非翻译)
您也可以在存储的proc中将字符串值转换为十六进制(二进制)值。操作系统有一些内置的函数可以做到这一点,对于RPG示例,请看这里的https://stackoverflow.com/a/58997608/2933177
https://stackoverflow.com/questions/60346673
复制相似问题