I use maxdb 7.6.00.15 (checkout 2005-07-29 )


Auto Commit: On, SQL Mode: Internal, Isolation Level: Committed
Base table or view already exists;-6000 Duplicate table name
select * from (SELECT attrToString('sex', '2', 11) from DUAL)

in maxdb 7.6.00.10 it worked succeed


if I execute SELECT attrToString('sex', '2', 11) from DUAL , result succed 'пол: женщина'

my func

DROP FUNCTION LAB.attrToString

//

CREATE FUNCTION LAB.attrToString
   ( attr            CHAR(50)
   , value            INT
   , revision        INT
   )
RETURNS VARCHAR

AS

VAR    sResult            VARCHAR(1000);
attr_name VARCHAR(255);
   attr_type        VARCHAR(10);
value_type VARCHAR(10);
   interval        VARCHAR(2);
   l_value            VARCHAR(12);
   u_value            VARCHAR(12);
   l_unit            VARCHAR(10);
   u_unit            VARCHAR(10);
   const_value        VARCHAR(50);
   const_name        VARCHAR(255);
   synonym            VARCHAR(255);
BEGIN IF attr IS NULL OR value IS NULL OR revision IS NULL THEN
       RETURN '';
SET sResult = ''; TRY SELECT attr_name, attr_type, value_type, interval, l_value, u_value, l_unit, u_unit, const_value, const_name, synonym INTO :attr_name, :attr_type, :value_type, :interval, :l_value, :u_value, :l_unit, :u_unit, :const_value, :const_name, :synonym
           FROM
               (
                   SELECT
cc.attr,
                           cc.attr_name,
                           cc.attr_type,
dd.attr_value,
                           dd.value_type,
                           dd.interval,
dd.l_value,
                           dd.u_value,
dd.l_unit,
                           dd.u_unit,
dd.const_value,
                           dd.const_name,
null synonym FROM LAB.er_dictionary_attributes cc,
                           LAB.er_attribute_default_values dd
WHERE cc.attr = :attr
                           AND cc.defined = 'const'
                           AND dd.attr_value = :value
UNION ALL SELECT cc.attr,
                           cc.attr_name,
                           cc.attr_type,
dd.attr_value,
                           dd.value_type,
dd.interval,
                           dd.l_value,
                           dd.u_value,
dd.l_unit,
                           dd.u_unit,
dd.const_value,
                           dd.const_name,
dd.synonym FROM LAB.er_dictionary_attributes cc,
                           LAB.er_attribute_user_values dd
WHERE cc.attr = :attr
                           AND cc.defined = 'user'
                           AND dd.attr_value = :value
AND dd.FromRevisionNo <= :revision AND :revision < DECODE(dd.ToRevisionNo, NULL, :revision + 1, dd.ToRevisionNo)
                   );
CASE WHEN value_type = 'const' THEN BEGIN
               SET sResult = attr_name || ': ' || const_name;
           END;
WHEN value_type = 'interval' THEN BEGIN CASE WHEN interval = '[]' THEN BEGIN SET sResult = '' || l_value || ' ' || LAB.unitToString(l_unit) || ' - ' || u_value || ' ' || LAB.unitToString(u_unit); END; WHEN interval = '>=' THEN BEGIN SET sResult = '>= ' || l_value || ' ' || LAB.unitToString(l_unit);
                   END;
WHEN interval = '<=' THEN BEGIN SET sResult = '<= ' || u_value || ' ' || LAB.unitToString(u_unit);
                   END;
WHEN interval = '>' THEN BEGIN /* not implement */ RETURN sResult; END; WHEN interval = '<' THEN BEGIN /* not implement */ RETURN sResult; END; WHEN interval = '=' THEN BEGIN /* not implement */ RETURN sResult; END; WHEN interval = '(]' THEN BEGIN /* not implement */ RETURN sResult; END; WHEN interval = '()' THEN BEGIN /* not implement */ RETURN sResult; END; WHEN interval = '[)' THEN BEGIN /* not implement */ RETURN sResult; END; ELSE
                       RETURN sResult;
END CASE; SET sResult = attr_name || ': ' || sResult; IF synonym IS NOT NULL THEN
                   SET sResult  = sResult || ' (' || synonym || ')';
/*
               IF unit_name IS NOT NULL THEN
                   SET s = s || ' ' || unit_name;
               */
END; ELSE
               RETURN 'error: no case value';
END CASE; CATCH
       IF $rc <> 100 THEN
           STOP($rc, $errmsg);
RETURN TRIM(sResult); END;


--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to