Here's the problem.
Stored procedure has 2 input parameters, X and Y.
Procedure creates another variable Z.
Value of parameters X and Y is the same- ÑÀÚËÏÝĈĞŦŞǙ ( yes, this are real letters!).
During parameter handling through procedure, value of parameter X is stored in varijable Z
and parameter Y and variable Z are inserted in database table.
INSERT Z,Y into table where etc,etc,etc.....
Table columns are defined as UNICODE (with purpose to support those kind of letters!)
Input parameters X and Y are varchar(50)
(IN X VARCHAR(50), IN Y VARCHAR(50))
variable Z is defined as
DECLARE Z VARCHAR(50) CCSID UNICODE;
Procedure itself is defined as
CREATE PROCEDURE TEST.M19TEST (
IN X VARCHAR(50),
IN Y VARCHAR(50))
ASUTIME LIMIT 1 RESULT SETS 1
PARAMETER CCSID UNICODE
WLM ENVIRONMENT T0DBWLOW
RUN OPTIONS 'NOTEST(NONE,*,*,*)'
so, everything is UNICODE defind (or am I missing something???)
But, after insert i got different value in database table. Input parameter Y is inserted fine (ÑÀÚËÏÝĈĞŦŞǙ),while variable Z is not, it does not support those kind of lettersm i only get a lot of garbage.( ÚË Ý Ş ).
Further testing it, I came to conclusion that the encoding is lost while setting variable Z with value of parameter X.
So, to conclude, parameter Y is inserted fine because stored procedure only stores input value of Y, while X is first 'copied' to Z, and then Z is inserted.
If any operation is done with input data, it loses encoding.