Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql DB2-400中带有CSSID的十六进制值_Sql_Db2_Db2 400 - Fatal编程技术网

Sql DB2-400中带有CSSID的十六进制值

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

我有一个存储过程,其中我用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_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')