I use MaxDB Version: 7.6.00.16 Build 016-123-109-428 for LINUX

Then I PACS.getInvestModel1 I have error

Auto Commit: On, SQL Mode: Internal, Isolation Level: Committed
General error;-8046 POS(76) Conversion from UNICODE impossible: A300
call PACS.getInvestModel1(1,'2Ж1',0)

if I not use function PACS.getRevision in recursive cursor PACS.getInvestModel1 call is ok.


DROP FUNCTION PACS.getRevision
//

CREATE FUNCTION PACS.getRevision(objId INT, qdate DATE)

RETURNS INT
AS

VAR result INT;

BEGIN
TRY IF qdate IS NULL THEN SET qdate=DATE; DECLARE curS CURSOR FOR SELECT revision FROM pacs.rtDataObjectRevisions WHERE DECODE(dtfrom,null,'1970-01-01',dtfrom)<=:qdate and :qdate <DECODE(dtto,null,'2100-12-31',dtto) and objId=:objId; FETCH curS INTO :result; CLOSE curS; RETURN result; CATCH
                    IF $rc <> 100 THEN BEGIN
                        CLOSE curS;
                        STOP($rc,$errmsg);
                   END;
END;

//

DROP DBPROC PACS.getInvestModel1
//
CREATE DBPROC PACS.getInvestModel1
 ( IN counter INT,
   IN resid VARCHAR(10),
   IN resnum INT
 )
RETURNS CURSOR AS

VAR objId INT; RevisionDate DATE;
BEGIN
TRY SELECT m.objId,i.dateres INTO :objId,:RevisionDate FROM PACS.dtProtocols p,PACS.invest i, PACS.rtProtocolModels m WHERE p.counter = :counter AND p.resid=:resid AND p.resnum=:resnum AND p.modelId = m.modelId AND p.counter=i.counter; DECLARE Model CURSOR FOR
               WITH RECURSIVE Nodes (ownerObjId, childObjId)
                   AS
                   (
                   SELECT ownerObjId, childObjId
                   FROM PACS.rtObjectHierarchies
                   WHERE ownerObjId=:objId AND
DECODE(fromRevision,null,1,fromRevision)<= PACS.getRevision(ownerObjId,:RevisionDate) AND PACS.getRevision(ownerObjId,:RevisionDate) < DECODE(toRevision,null,PACS.getRevision(ownerObjId,:RevisionDate)+1,toRevision)
                       UNION ALL
                   SELECT a.ownerObjId,a.childObjId
                   FROM PACS.rtObjectHierarchies a,Nodes
                   WHERE a.ownerObjId=Nodes.childObjId AND
DECODE(a.fromRevision,null,1,a.fromRevision)<= PACS.getRevision(a.ownerObjId,:RevisionDate) AND PACS.getRevision(a.ownerObjId,:RevisionDate) < DECODE(a.toRevision,null,PACS.getRevision(a.ownerObjId,:RevisionDate)+1,a.toRevision)
                   )
SELECT childObjId as id, ownerObjId as parent FROM Nodes FOR REUSE; $CURSOR = 'MY_CURSOR';
       DECLARE :$CURSOR CURSOR FOR
           SELECT a.Id, a.parent, b.name,b.objtype
       FROM
         DBADMIN.Model a,
         PACS.rtDataObjects b
       WHERE
         a.id = b.objId
            UNION ALL
       SELECT :objId as id, 0 as parent,d.name,d.objtype
       FROM
           dbadmin.dual c,
           PACS.rtDataObjects d
       WHERE
           d.objId=:objId;
   CATCH STOP($rc,$errmsg);
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