Sql DB2-400中带有CSSID的十六进制值
我有一个存储过程,其中我用CSSID 65535传递一个值(来自字符(13))并试图通过它返回一个ID 程序如下:Sql DB2-400中带有CSSID的十六进制值,sql,db2,db2-400,Sql,Db2,Db2 400,我有一个存储过程,其中我用CSSID 65535传递一个值(来自字符(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_IDENT
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是一个字符(26)和一个匹配的cssid。我也尝试过,它是一个字符13,结果相同
当我称之为:
CALL PROGRAM . GET_ID_BY_WEB_IDENTIFIER (x'0213725501A421B9A457123001')
我找回了我的ID,但当我这样打电话时(就像在网络生产中所说的那样):
我得到一个转换错误
如何确保只传递字符串“02137255501A421B9A457123001”将以这种方式返回我的ID?此
x'02137255501A421B9A457123001'
是一个十六进制字符串文字。快速浏览,它主要表示不可打印的字符
'02137255501A421B9A457123001'
是实际字符串。它在db2上的十六进制等价物是
x'f0f2f1f7f2f5f0f1c1f4f2f1c2f9c1f4f5f7f2f3f0f1'
差别很大
您的web应用程序还需要将其作为十六进制文字传递,请确保将存储的过程参数定义为CCSID 65535(二进制/无翻译)
(可选)您可以在存储的过程中从字符串值转换为十六进制(二进制)值。操作系统有一些内置函数来实现这一点,对于RPG示例,请看这里,那么我如何才能按需要调用该过程?如果我调用它时前面带有“x”,它会找到记录并返回IDI“我通过PHP调用,但我更喜欢在400上DB2的存储过程中调用
CALL PROGRAM . GET_ID_BY_WEB_IDENTIFIER ('0213725501A421B9A457123001')