mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
move SQF wait/loop to get OID to SQL Procedure
for some reason you cannot directly get the OID using SELECT LAST_INSERT_ID(); and you cannot return it within the same hive call as the insert call (????). Requires new procedure for 1.0.6.2
This commit is contained in:
44
Server Files/SQL/1.0.6.2_Updates.sql
Normal file
44
Server Files/SQL/1.0.6.2_Updates.sql
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
DayZ Epoch 1.0.6.2 Updates
|
||||
|
||||
RUN THIS FILE IF UPDATING AN EXISTING 1061 DATABASE TO 1062.
|
||||
NEW DATABASES SHOULD USE EPOCH.SQL INSTEAD.
|
||||
EXISTING 1051 DATABASES SHOULD RUN 1.0.6_UPDATES.SQL FIRST, 1.0.6.1_UPDATES.SQL SECOND, THEN RUN THIS FILE.
|
||||
*/
|
||||
|
||||
/*
|
||||
THIS PROCEDURE IS REQUIRED FOR 1062 AND RETURNS THE OBJECT ID MUCH MORE EFFICENTLY THAN THE METHOD IN 1061 SQF
|
||||
*/
|
||||
DROP procedure IF EXISTS `retObjID`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `retObjID`(
|
||||
IN objTableName VARCHAR(256),
|
||||
IN SID INT(11),
|
||||
IN UID bigint(24),
|
||||
OUT OID INT(11)unsigned
|
||||
)
|
||||
BEGIN
|
||||
DECLARE x INT;
|
||||
declare sqlstr VARCHAR(256);
|
||||
|
||||
SET @OID = 0;
|
||||
SET @x = 1;
|
||||
SET @sqlstr = CONCAT('SELECT `ObjectID` from `', objTableName ,'` where `Instance` = ', SID ,' AND `ObjectUID` = ', UID ,' INTO @OID');
|
||||
PREPARE stmt FROM @sqlstr;
|
||||
|
||||
WHILE (@x <= 5) DO
|
||||
EXECUTE stmt;
|
||||
IF (@OID > 0) then
|
||||
SET @x = 6;
|
||||
else
|
||||
SET @x = @x + 1;
|
||||
DO sleep(0.1);
|
||||
END IF;
|
||||
END WHILE;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
SET OID = @OID;
|
||||
SELECT @OID;
|
||||
END;$$
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user