ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΈΠ³Π³Π΅ΡΡ BEFORE, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π²ΡΠ΄Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
ΠΠ»Ρ Π»ΡΠ±ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Firebird ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π΄Π²Π° ΡΡΠΈΠ³Π³Π΅ΡΠ° Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»: BEFORE INSERT ΠΈ BEFORE UPDATE.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π²ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ:
CREATE EXECPTION E_CANT_ACCEPT
'Operation refused. REASON: Customer is on hold.' ^
/* ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ. ΠΡΠΈΡΠΈΠ½Π°: Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° */
CREATE EXCEPTION E_CANT_EXTEND
'Operation refused. REASON: Order already shipped.' ^
/* ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ. ΠΡΠΈΡΠΈΠ½Π°: Π·Π°ΠΊΠ°Π· ΡΠΆΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ */
COMMIT ^
Π’ΡΠΈΠ³Π³Π΅ΡΡ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.x:
CREATE TRIGGER BI_SALES0 FOR SALES
ACTIVE BEFORE INSERT POSITION 0 AS
BEGIN
IF (EXISTS (SELECT 1 FROM CUSTOMER
WHERE CUST_NO = NEW.CUST_NO
AND ON_HOLD IS NOT NULL)) THEN
EXCEPTION E_CANT_ACCEPT;
END ^
/* */
CREATE TRIGGER BU_SALES0 FOR SALES
ACTIVE BEFORE UPDATE POSITION 0 AS
BEGIN
IF (OLD.ORDER_STATOS = 'shipped') THEN
EXCEPTION E_CANT_EXTEND; ELSE
IF (EXISTS (SELECT 1 FROM CUSTOMER
WHERE CUST_NO = NEW.CUST_NO
AND ON_HOLD IS NOT NULL) ) THEN
EXCEPTION E_CANT_ACCEPT;
END ^
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ 1.5 ΠΏΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π² CREATE EXCEPTION, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΠΊΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²Π΅ΡΡΠΈΠΈ 1.5 ΠΏΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ°ΠΌΡΡ ΠΏΡΠ°Π²ΠΈΠ», ΡΡΠΎ ΠΈ Π² Π΄Π²ΡΡ ΡΡΠΈΠ³Π³Π΅ΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² ΠΎΠ΄ΠΈΠ½ ΡΡΠΈΠ³Π³Π΅Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅:
CREATE EXCEPTION E_REFUSE_ORDER 'Operation refused. ' ^
/* ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ³Π½ΡΡΠ° */
Π Π²ΠΎΡ ΡΡΠΈΠ³Π³Π΅Ρ:
CREATE TRIGGER BA_SALES0 FOR SALES
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS
DECLARE VARIABLE ORDER_STATE SMALLINT = 0;
BEGIN
IF (UPDATING AND OLD.ORDER_STATUS = 'shipped') THEN
ORDER_STATE = 1;
IF (
(EXISTS (SELECT ON_HOLD FROM CUSTOMER
WHERE CUST_NO = NEW.CUST_NO
AND ON_HOLD IS NOT NULL)
AND (INSERTING OR ORDER_STATE = 0)) THEN
ORDER_STATE = 2;
IF (ORDER_STATE = 1) THEN
EXCEPTION E_REFUSE_ORDER 'Order ' || NEW.PO_NUMBER || ' already shipped.';
/* EXCEPTION E_REFUSE_ORDER 'ΠΠ°ΠΊΠ°Π· ' || NEW.PO_NUMBER || ' ΡΠΆΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½' */
ELSE
IF (ORDER_STATE = 2) THEN
EXCEPTION E_REFUSE_ORDER
'Order '|| NEW.PO_NUMBER ||'. Customer ' || NEW.CUST_NO || ' is on hold.';
/* 'ΠΠ°ΠΊΠ°Π· '|| NEW.PO_NUMBER ||'. ΠΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Ρ ' || NEW.CUST_NO || ' Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½'; */
END ^
Π ΠΌΠ°ΡΡΠΈΠ²Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠΌΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 10 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΊΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ΄Ρ SQLCODE, GDSCODE, ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄Π»Ρ GDSCODE ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π»ΠΈΠ·Π° Firebird 1.5.0.
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Firebird ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΠΈΠ· Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄Ρ SQLCODE ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ, Π½ΠΎ GDSCODE Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π½Π° Π»Π΅ΡΡ. Π€Π°ΠΉΠ» firebird.msg Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Firebird ΡΠΎΠ·Π΄Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ
Π Π°Π΄ΠΈ Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡΠΈΡ gbak Π΄Π»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ gbak.msg) ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ CVS ΠΏΡΠΎΠ΅ΠΊΡΠ° Firebird. ΠΠΎΠΉΠ΄ΠΈΡΠ΅ Π½Π° http:// sourceforge.net/projects/firebird ΠΈ ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ CVS Browser, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠ±Π΅ΡΠ΅ΡΠ΅ΡΡ Π΄ΠΎ Π²Π΅ΡΠ²ΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ,/firebird/firebird2/src/msgs/. Π Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ Π΄ΠΈΡΠΏΠ»Π΅Ρ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠ΅Π»ΠΊΠ΅ Π²ΡΠΏΠ°Π΄Π°ΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅ΠΉ Π²Π°Ρ Π²Π΅ΡΠ²ΠΈ. ΠΡΡΡΠ΄Π° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΉΠ».
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»Π° ΡΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 10. ΠΠ½Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎ Π²Π½Π΅ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π΄Π»Ρ Π²Π°Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
SET TERM ^;
/* ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» */
CREATE TABLE ERRORCODES
EXTERNAL FILE
'Π‘:\Program Files\Firebird\Firebird_1_5\MyData\27 94app10.txt'
(Listltem CHAR(169))^
COMMIT^
/* ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ASCII_CHAR() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠ°ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ */
/* DECLARE EXTERNAL FUNCTION ascii_char
INTEGER
RETURNS CSTRING(1) FREE_IT
ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf'^
COMMIT^
/* ΠΠΎΠ΄ ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΌΠ° Ρ ΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠΎΠ·Π΄Π°ΡΡΠ°Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 10 Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ*/
CREATE PROCEDURE OUTPUT ERRCODES
AS
DECLARE VARIABLE SQC SMALLINT;
DECLARE VARIABLE NUM SMALLINT;
DECLARE VARIABLE FAC SMALLINT;
DECLARE VARIABLE SYM VARCHAR(32);
DECLARE VARIABLE TXTVARCHAR(118) ;
DECLARE VARIABLE GDC CHAR(9) CHARACTER SET OCTETS
DECLARE VARIABLE BASEO INTEGER = 335544320;
DECLARE VARIABLE CALCNUM INTEGER;
DECLARE VARIABLE EOL CHAR(2) ;
BEGIN
EOL = ASCII_CHAR(13) || ASCII_CHAR(10);
/* ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ */
FOR SELECT
S.SQL_CODE,
S.NUMBER,
S.FAC_CODE,
S. GDS_SYMBOL,
M.TEXT
FROM SYSTEM_ERRORS S
JOIN MESSAGES M
ON
M.FAC_CODE = S.FAC_CODE
AND M.NUMBER = S.NUMBER
AND M.SYMBOL = S.GDS_SYMBOL
/* Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΡ /Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² */
WHERE M.TEXTNOT CONTAINING 'journal'
AND M.TEXTNOT CONTAINING 'dump'
AND s.GDS_SYMBOL NOT CONTAINING 'license'
AND S.GDS_SYMBOL NOT CONTAINING 'wal_'
AND S. GDS_SYMBOLIS NOT NOLL
AND S.SQL_CODE < 102
ORDER BY1 DESC, 2
INTO :SQC, :NUM, :FAC, :SYM, :TXT
DO
BEGIN
/* Π’Π΅ΠΊΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΡΠΊ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π² Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠΊΠ²Ρ */
IF (TXT IS NULL) THEN
TXT = '(Message unknown)';
ELSE
TXT = UPPER(SUBSTRING(TXT FROM 1 FOR 1)) ||
SUBSTRING(TXT FROM 2);
/* Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² (FAC_CODE) ΠΈ ΡΠΈΡΠ΅Π» NUMBER ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΡΠ΅Π» GDSCODE. ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ SYSTEM_ERRORS ΠΈ MESSAGES */
IF (FAC IS NOT NULL AND NUM IS NOT NULL) THEN
/* ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ! */
BEGIN
CALCNUM = BASE0 + (FAC * 65535);
CALCNUM = CALCNUM + NUM + FAC;
GDC = CAST(CALCNUM AS CHAR(9));
INSERT INTO ERRORCODES
VALUES(
/* Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ */
:SQC || ' | ' || :GDC | | ' | ' || :SYM | | ' |' | | :TXT || :EOL) ;
END
END
END ^
COMMIT^
EXECUTE PROCEDURE OUTPUT_ERRCODES ^
COMMIT ^
SET TERM ; ^
/* Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ΅ΠΏΠ΅ΡΡ Π³ΠΎΡΠΎΠ² ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΡΡΡΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΈ Π·Π°ΠΌΠ΅Π½Π° Π·Π°ΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ '|' Π½Π° ASCII 9 (tab), ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ. */
Π‘ΠΎΠ±ΡΡΠΈΡ
Π‘ΠΎΠ±ΡΡΠΈΡ Firebird ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΠΆΠΈΠΌ "ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ" ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅ΡΠ²Π΅Ρ-ΠΊΠ»ΠΈΠ΅Π½Ρ Π±Π΅Π· ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π·Π°ΡΡΠ°Ρ Π½Π° ΠΎΠΏΡΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½ΠΎΠ²ΠΎΡΡΠΈ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π΄ΠΊΠΎΡΡΡΡ Π² ΠΌΠΈΡΠ΅ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ Π² Firebird Π½Π΅ ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΏΡΠΈ ΠΎΠΏΡΠΎΡΠ΅. ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠ»ΠΈΠ΅Π½Ρ "ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ" Π² ΡΠΎΠ±ΡΡΠΈΠΈ ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΎΠ½ ΠΆΠ΄Π΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
ΠΠΎΠ³Π΄Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΡΡΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΌ ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π»ΡΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ Π² Firebird ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅Π·Π³ΡΠ°Π½ΠΈΡΠ½Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΌΠ°ΡΡΡΠ°Π±Π° ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ:
* ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ;
* ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ Π±ΠΈΠ»Π΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡ ΡΡ Π΅ΠΌΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠ³Π½Π°Π»Π° Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΊΡΡΡΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠΈΡΠ°Ρ , ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ;
* ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠ΄Π΅Π»Ρ Π·Π°ΠΊΡΠΏΠΎΠΊ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "Π·Π°ΠΏΠ°Ρ Π½Π° ΠΈΡΡ ΠΎΠ΄Π΅", ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½ΠΈΠΆΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π·Π°ΠΏΠ°ΡΠΎΠ²;
* ΡΠΎΠ·Π½ΠΈΡΠ½ΡΠ΅ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ°ΠΉΡ-Π»ΠΈΡΡΠ°;
* ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π·Π°ΠΏΠ°ΡΠΎΠ² ΡΡΡΡΡ.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°
ΠΠ½ΠΈΡΠΈΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ - ΡΡΠΏΠ΅ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ INSERT, UPDATE ΠΈ DELETE. Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎ ΡΠΎΠ±ΡΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΡΠΈΠ³Π³Π΅ΡΠ°Ρ ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° PSQL
POST_EVENT.
ΠΠ΄Π½Π°ΠΊΠΎ POST EVENT ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°- ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠ½ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠ»ΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° ΡΠ»ΡΡΠ°ΡΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠ½ Π½Π΅ Π½Π΅ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎ ΠΊΠ°ΠΊΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΎΠ½ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ; Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
Π‘Π°ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ²Π»ΡΡΡΡΡ: