Eingabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
TYPENAME |
VARCHAR(100) |
Typ Name |
RECORDID |
INTEGER |
Record ID |
SESSIONID |
VARCHAR(255) |
Session ID |
SERVERID |
VARCHAR(100) |
Server ID |
Ausgabeparameter
Parameter | Typ | Beschreibung |
---|---|---|
RESULT |
SMALLINT |
Rückgabe Wert |
Beschreibung
Reserviert bei den DABiS Premium Modulen einen Datensatz für eine bestimmte Session/Server-Kombination.
Definition
CREATE PROCEDURE LOCK_RECORD_SESSION(
TYPENAME VARCHAR(100),
RECORDID INTEGER,
SESSIONID VARCHAR(255),
SERVERID VARCHAR(100))
RETURNS (
RESULT SMALLINT)
AS
declare variable CURRENTSERVERID varchar(100);
declare variable OK smallint;
declare variable CURRENTSESSIONID varchar(255);
declare variable CURRENTLOCKTIME date;
declare variable CURRENTRECORDID integer;
begin
/* reserviert einen Datensatz fuer eine bestimmte
session/server-Kombination */
ok = 0;
currentrecordid = null;
/* Testen, ob es den Record gibt
spaeter vielleicht
if (typename = 'BLOCK') then
begin
select BKID from bloecke where bloecke.bkid = :RECORDID into :currentrecordid;
end
else if (typename = '') then
begin
OK = 1;
end
*/
/* testweise, bis die existenz des records ermittelt wird (s.o.)*/
currentrecordid = recordid;
if (currentrecordid is not null) then
begin
select RLSESSIONID, RLLOCKTIME, RLSERVERID from RECORDLOCKS where RLTYPENAME = :TYPENAME and RLRECORDID = :RECORDID into :CURRENTSESSIONID, :CURRENTLOCKTIME, :CURRENTSERVERID;
if (currentlocktime IS NULL) then
begin
insert into recordlocks (rltypename, rlrecordid, rlsessionid, rllocktime, rlserverid) values (:TYPENAME, :RECORDID, :SESSIONID, current_timestamp, :serverid);
ok = 2;
end else if ((currentsessionid = sessionid) and (currentserverid = serverid)) then
begin
update recordlocks set rllocktime = current_timestamp where rltypename = :TYPENAME and rlrecordid = :recordid;
ok = 1;
end else
begin
ok = 3;
end
end
RESULT = OK;
end
![]() ![]() ![]() |