Это работает:
SELECT TASKT_ID FROM DATA . TASKT WHERE TASK_WEB_IDENTIFIER = CAST ( HEXTORAW ( '0213725501A421D384233E5001' ) AS CHAR ( 26 ) ) ;
После этой работы я поместил ее в процедуру:
BEGIN
DECLARE GET_TASKT_ID_BY_TASK_WEB_IDENTIFIER_C1 CURSOR WITH RETURN FOR
SELECT TASKT_ID FROM DATA . TASKT WHERE TASK_WEB_IDENTIFIER = CAST ( HEXTORAW ( P_WEB_IDENTIFIER ) AS CHAR ( 26 ) ) ;
OPEN GET_TASKT_ID_BY_TASK_WEB_IDENTIFIER_C1 ;
END
У процедуры есть один параметр P_WEB_IDENTIFIER, который является CHAR (26) для бита данные с CCSID 65535
Однако, когда я теперь вызываю их со строкой, подобной следующей:
call PROGRAM . GET_TASKT_ID_BY_TASK_WEB_IDENTIFIER ('0213725501A421D384233E5001');
Я получаю обратно, что аргумент для VARBINARY_FUNCTION недопустим по длине или типу данных.
Кроме того, это работает:
call PROGRAM . GET_TASKT_ID_BY_TASK_WEB_IDENTIFIER (CAST('0213725501A421D384233E5001' as char(26)));
Что я могу сделать, чтобы убедиться, что строка преобразуется с передачей только строки?