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]