Genus Neduba wrote:
Okay, here the complete statement (but it's in german)
Your SQL-statement: CREATE FUNCTION loc_transform (location_t)
RETURNS
VARCHAR(60) LANGUAGE SQL RETURN 'building ' || loc..building || ', floor '
|| loc..floor || ', room ' || loc..room || ', booth ' || loc..booth
Fehler: SQL-Abfrage nicht durchführbar. [IBM][CLI Driver][DB2/LINUX]
SQL0440N Es wurde keine berechtigte Routine "||" des Typs "FUNCTION" mit
kompatiblen Argumenten gefunden. LINE NUMBER=2. SQLSTATE=42884
and:
CREATE TYPE location_t AS (
building INTEGER,
floor INTEGER,
room INTEGER,
booth VARCHAR(30)) MODE DB2SQL
Note that VARCHAR(60) is too short if the numbers are maxed out. You don't
want to run into a run-time problem then!!
CREATE FUNCTION loc_transform(loc location_t)
RETURNS VARCHAR(100)
LANGUAGE SQL
DETERMINISTIC
NO EXTERNAL ACTION
RETURN 'building ' || RTRIM(CHAR(loc..building)) ||
', floor ' || RTRIM(CHAR(loc..floor)) ||
', room ' || RTRIM(CHAR(loc..room)) ||
', booth ' || loc..booth
CREATE TRANSFORM FOR location_t my_transform (
FROM SQL WITH FUNCTION loc_transform )
CREATE TABLE t ( a int, b location_t )
INSERT INTO t VALUES (1, location_t()..building(1)..
floor(2)..room(3)..booth('booth'))
SET CURRENT DEFAULT TRANSFORM GROUP = my_transform
SELECT * FROM t
A B
----------- ---------------------------------------------------
1 building 1, floor 2, room 3, booth booth
1 record(s) selected.
Note that "TO SQL" transform functions/methods are a bit more complicated to
use. Have a look here for some examples:
http://publib.boulder.ibm.com/infoce...t/rsbp4165.htm
--
Knut Stolze
DB2 Information Integration Development
IBM Germany