DB2 - Problem description
| Problem IC81971 | Status: Closed |
UNPREDICTABLE RESULTS FROM FUNCTION WITH ROW RESULT TYPE AND OUTPUT PARAMETERS | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problem description: | |
A function that returns a row result type and has output
parameters can produce unpredictable results. The assignment to
the variables representing the output parameters and return
value are shifted such that:
output parameter 1 is assigned to the variable for the return
value
output parameter 2 is assigned to the variable for output
parameter 1
...
output parameter N is assigned to the variable for output
parameter N-1
the return value is assigned to the variable for output
parameter 1
The problem occurs when assigning a function with a row result
type to a row variable using the SET or VALUES INTO statements.
Either the source or target (or both) must be an anchored row
data type, and the source function must have one or more output
parameters.
An error will likely be reported as a result of these mismatched
assignments, for example, SQL0303N. It is also possible no
error is reported but the function invocation produces wrong
results. This symptom is demonstrated in the example below.
create table t1 (c1 varchar(20))
DB20000I The SQL command completed successfully.
create table result (type varchar(20), text varchar(20))
DB20000I The SQL command completed successfully.
create type row1 as row anchor row t1
DB20000I The SQL command completed successfully.
create function foo(out a varchar(20)) returns anchor row t1
begin
declare returnVal anchor row t1;
set a = 'output value';
set returnVal.c1 = 'return value';
return returnVal;
end
DB20000I The SQL command completed successfully.
begin
declare v1 anchor row t1;
declare v2 varchar(20);
set v1 = foo(v2);
insert into result values ('output', v2), ('result', v1.c1);
end
DB20000I The SQL command completed successfully.
select * from result
TYPE TEXT
-------------------- --------------------
output return value
result output value
2 record(s) selected. | |
| Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * ALL * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to DB2 LUW Version 9.7 Fix Pack 6 * **************************************************************** | |
| Local Fix: | |
| available fix packs: | |
DB2 Version 9.7 Fix Pack 6 for Linux, UNIX, and Windows | |
| Solution | |
Fixed in DB2 LUW Version 9.7 Fix Pack 6 | |
| Workaround | |
not known / see Local fix | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 12.03.2012 06.06.2012 06.06.2012 |
| Problem solved at the following versions (IBM BugInfos) | |
9.7.FP6 | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.7.0.6 |
|