Обсуждение:Перенос данных на чистую базу (постановка)
Материал из GedeminWiki
Версия от 17:15, 12 сентября 2011; Evgeny (обсуждение | вклад)
Rод добавления идентификаторов в множество, которые нужно перенести на чистую базу данных(для таблицы GD_DOCUMENT):
EXECUTE BLOCK(Num integer = :num)
AS
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE PARENT INTEGER;
DECLARE VARIABLE DOCUMENTTYPEKEY INTEGER;
DECLARE VARIABLE TRTYPEKEY INTEGER;
DECLARE VARIABLE TRANSACTIONKEY INTEGER;
DECLARE VARIABLE NUMBER VARCHAR(20) CHARACTER SET WIN1251;
DECLARE VARIABLE DOCUMENTDATE DATE;
DECLARE VARIABLE DESCRIPTION VARCHAR(180) CHARACTER SET WIN1251;
DECLARE VARIABLE SUMNCU NUMERIC(15,4);
DECLARE VARIABLE SUMCURR NUMERIC(15,4);
DECLARE VARIABLE SUMEQ NUMERIC(15,4);
DECLARE VARIABLE DELAYED SMALLINT;
DECLARE VARIABLE AFULL INTEGER;
DECLARE VARIABLE ACHAG INTEGER;
DECLARE VARIABLE AVIEW INTEGER;
DECLARE VARIABLE CURRKEY INTEGER;
DECLARE VARIABLE COMPANYKEY INTEGER;
DECLARE VARIABLE CREATORKEY INTEGER;
DECLARE VARIABLE CREATIONDATE TIMESTAMP;
DECLARE VARIABLE EDITORKEY INTEGER;
DECLARE VARIABLE EDITIONDATE TIMESTAMP;
DECLARE VARIABLE PRINTDATE DATE;
DECLARE VARIABLE DISABLED SMALLINT;
DECLARE VARIABLE RESERVED INTEGER;
DECLARE VARIABLE USR$EQRATE NUMERIC(15,4);
DECLARE VARIABLE I INTEGER = 0;
DECLARE VARIABLE J INTEGER = 1;
BEGIN
g_his_create(I);
g_his_create(J);
FOR
SELECT ID,PARENT,DOCUMENTTYPEKEY,TRTYPEKEY,TRANSACTIONKEY,NUMBER,DOCUMENTDATE,DESCRIPTION,SUMNCU,
SUMCURR,SUMEQ,DELAYED,AFULL,ACHAG,AVIEW,CURRKEY,COMPANYKEY,CREATORKEY,CREATIONDATE,
EDITORKEY,EDITIONDATE,PRINTDATE,DISABLED,RESERVED,USR$EQRATE
FROM GD_DOCUMENT
INTO :ID,:PARENT,:DOCUMENTTYPEKEY,:TRTYPEKEY,:TRANSACTIONKEY,:NUMBER,:DOCUMENTDATE,:DESCRIPTION,
:SUMNCU,:SUMCURR,:SUMEQ,:DELAYED,:AFULL,:ACHAG,:AVIEW,:CURRKEY,:COMPANYKEY,
:CREATORKEY,:CREATIONDATE,:EDITORKEY,:EDITIONDATE,:PRINTDATE,:DISABLED,:RESERVED,:USR$EQRATE
DO BEGIN
g_his_include(J, :id);
g_his_exclude(I, :id);
if (g_his_has(J,:PARENT) = 0) then
g_his_include(I, :PARENT);
if (g_his_has(J,:DOCUMENTTYPEKEY) = 0) then
g_his_include(I, :DOCUMENTTYPEKEY);
if (g_his_has(J,:TRTYPEKEY) = 0) then
g_his_include(I, :TRTYPEKEY);
if (g_his_has(J,:TRANSACTIONKEY) = 0) then
g_his_include(I, :TRANSACTIONKEY);
if (g_his_has(J,:CURRKEY) = 0) then
g_his_include(I, :CURRKEY);
if (g_his_has(J,:COMPANYKEY) = 0) then
g_his_include(I, :COMPANYKEY);
if (g_his_has(J,:CREATORKEY) = 0) then
g_his_include(I, :CREATORKEY);
if (g_his_has(J,:EDITORKEY) = 0) then
g_his_include(I, :EDITORKEY);
END
FOR
SELECT ID,PARENT,DOCUMENTTYPEKEY,TRTYPEKEY,TRANSACTIONKEY,NUMBER,DOCUMENTDATE,DESCRIPTION,SUMNCU,
SUMCURR,SUMEQ,DELAYED,AFULL,ACHAG,AVIEW,CURRKEY,COMPANYKEY,CREATORKEY,CREATIONDATE,EDITORKEY,
EDITIONDATE,PRINTDATE,DISABLED,RESERVED,USR$EQRATE
FROM GD_DOCUMENT
INTO :ID,:PARENT,:DOCUMENTTYPEKEY,:TRTYPEKEY,:TRANSACTIONKEY,:NUMBER,:DOCUMENTDATE,:DESCRIPTION,
:SUMNCU,:SUMCURR,:SUMEQ,:DELAYED,:AFULL,:ACHAG,:AVIEW,:CURRKEY,:COMPANYKEY,:CREATORKEY,
:CREATIONDATE,:EDITORKEY,:EDITIONDATE,:PRINTDATE,:DISABLED,:RESERVED,:USR$EQRATE
DO BEGIN
if (g_his_has(J, :parent) = 1) then
begin
g_his_include(J, :id);
g_his_exclude(I, :id);
if (g_his_has(J,:PARENT) = 0) then
g_his_include(I, :PARENT);
if (g_his_has(J,:DOCUMENTTYPEKEY) = 0) then
g_his_include(I, :DOCUMENTTYPEKEY);
if (g_his_has(J,:TRTYPEKEY) = 0) then
g_his_include(I, :TRTYPEKEY);
if (g_his_has(J,:TRANSACTIONKEY) = 0) then
g_his_include(I, :TRANSACTIONKEY);
if (g_his_has(J,:CURRKEY) = 0) then
g_his_include(I, :CURRKEY);
if (g_his_has(J,:COMPANYKEY) = 0) then
g_his_include(I, :COMPANYKEY);
if (g_his_has(J,:CREATORKEY) = 0) then
g_his_include(I, :CREATORKEY);
if (g_his_has(J,:EDITORKEY) = 0) then
g_his_include(I, :EDITORKEY);
END
END
END