Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠœΠΈΡ€ InterBase. АрхитСктура, администрированиС ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² InterBase/FireBird/YaffilΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 18

Автор А Ковязин

full_goods_name=CURR_CHILD_NAME| ' ' | full_goods_name,-

SUSPEND; /* Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ‚ΠΎΠ²Π°Ρ€Π°*/

END

END

END

END


Если ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ с Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ID_GOOD2SHOW= 1, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

FULL_GOODS__NAME


Бытовая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π₯олодильники Π’Ρ€Π΅Ρ…ΠΊΠ°ΠΌΠ΅Ρ€Π½Ρ‹Π΅

Бытовая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π₯олодильники Π”Π²ΡƒΡ…ΠΊΠ°ΠΌΠ΅Ρ€Π½Ρ‹Π΅

Бытовая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π₯олодильники ΠžΠ΄Π½ΠΎΠΊΠ°ΠΌΠ΅Ρ€Π½Ρ‹Π΅

Бытовая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π‘Ρ‚ΠΈΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅

Бытовая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π‘Ρ‚ΠΈΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π€Ρ€ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π£Π·ΠΊΠΈΠ΅

Бытовая Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π‘Ρ‚ΠΈΡ€Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π€Ρ€ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠ΅

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠ΅

ID_CHILD_GOOD


6

7

8

9

11

12

3

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСкурсивной Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΌΡ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈΡΡŒ ΠΏΠΎ всСму Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΈ Π²Ρ‹Π²Π΅Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ - "Π»ΠΈΡΡ‚ΡŒΠ΅Π²", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π½Π° самых ΠΊΠΎΠ½Ρ‡ΠΈΠΊΠ°Ρ… Π²Π΅Ρ‚Π²Π΅ΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

На этом Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ рассмотрСниС основных возмоТностСй языка Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ здСсь ΠΌΡ‹ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ основныС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, связанныС с Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ. ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹Π΅ конструкции ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ проСктирования Π₯П ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

Π§Π°ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹Ρ… вопросов, связанных с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Π±ΡƒΠ΄Π΅Ρ‚ раскрыта Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ - "Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности языка Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ InterBase", которая посвящСна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… ситуаций Π² Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами.

Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности языка Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ InterBase

Π­Ρ‚Π° Π³Π»Π°Π²Π° посвящСна Ρ‚Π΅ΠΌ возмоТностям языка Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ InteiBase, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ устойчивыС ΠΈ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ошибок

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

ΠŸΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ· рассматриваСмых особСнностСй языка Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (Π₯П) ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² InterBase являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ"

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ InterBase Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков высокого уровня, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ свои особСнности ЀактичСски ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ InterBase - это сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнноС, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ программистом имя ΠΈ тСкст сообщСния ΠΎΠ± ошибкС. БоздаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


БРЕАВЕ EXCEPTION <имя_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ> <тСкст_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ>;


НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:


CREATE EXCEPTION test_except 'Test exception';


Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ DROP EXCEPTION <имя_удаляСмого_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ>, Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ - ALTER EXCEPTION <имя_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ> <тСкст_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ>

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:


EXCEPTION <имя_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ>;


Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ случай дСлСния Π½Π° Π½ΡƒΠ»ΡŒ ΠΈ Π²ΠΎΠ·Π±ΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ссли Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

Для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создадим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:


CREATE EXCEPTION zero_divide 'Cannot divide by zero!';


Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:


CREATE PROCEDURE SP_DIVIDE (

DELIMOE DOUBLE PRECISION,

DELITEL DOUBLE PRECISION)

RETURNS (

RESULT DOUBLE PRECISION)

AS

BEGIN

if (Delitel<0.0000001) then

BEGIN

EXCEPTION zero_divide;

Result=0;

END

ELSE

BEGIN

Result=Delimoe/Delitel;

END

SUSPEND;

END


Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, тСкст Π₯П Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π΅Π½ - Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Delitel ΠΈ Delimoe, Π·Π°Ρ‚Π΅ΠΌ сравниваСм Delitel с 0.0000001, Ρ‚. Π΅. фактичСски с Π½ΡƒΠ»Π΅ΠΌ, Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ Π² ΠΎΠ΄Π½Ρƒ Π΄Π΅ΡΡΡ‚ΠΈΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π½ΡƒΡŽ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ вСщСствСнныС числа Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ нСпосрСдствСнно ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ·-Π·Π° ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚Π΅ΠΉ Π² Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части). Если Delitel Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ Π½ΡƒΠ»ΡŽ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ, Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ zero_divide. Π§Ρ‚ΠΎ ΠΆΠ΅ происходит Π² случаС возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ? Если ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, выполняя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ SP_divide с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ Π² isql. Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅


SQL> select * from sp_divide(300,0);

RESULT

==========

Statement failed, SQLCODE = -836

exception 1

-Cannot divide by zero!


Если ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ эту Π₯П с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‚ΠΎ скорСС всСго ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сообщСниС ΠΎΠ± ошибкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:





Рис 1.4. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, сообщСниС ΠΎΠ± ошибкС - это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ нашСго ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ сСрвСром InterBase. Когда InterBase ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ возникшСС Π² Π₯П ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ½ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ этой Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС измСнСния, сдСланныС Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ BEGIN END, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ссли Π₯П являСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ-Π²Ρ‹Π±ΠΎΡ€ΠΊΠΎΠΉ, Ρ‚ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ дСйствия лишь Π΄ΠΎ послСднСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° SUSPEND.

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ссли Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅-Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π΅ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ производятся ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия, ΠΈ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° Π΅ΡΡ‚ΡŒ SUSPEND, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ О1мСня1ся всС дСйс1вия, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Π² этом Ρ†ΠΈΠΊΠ»Π΅ Π΄ΠΎ послСднСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° SUSPEND.

Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΌΠ°Π»ΠΎ ΠΏΠΎΠ»ΡŒΠ·Ρ‹, Ссли Π±Ρ‹ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π‘Π£Π‘Π” Π½Π΅ Π±Ρ‹Π»ΠΎ возмоТности ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ смог ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ возникшСС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, примСняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ конструкция языка XП ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ²:


WHEN EXCEPTION <имя_ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ> DO

BEGIN

/*ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ*/

END



ИспользованиС этой конструкции ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ возвращСния стандартной ошибки с тСкстом ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ произвСсти собствСнныС дСйствия ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

Когда возбуТдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°) прСрываСтся. InterBase Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ WHEN EXCEPTION...DO для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ возникшСго ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ BEGIN...END. Если Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ поднимаСтся Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅ (Π²Ρ‹ΡˆΠ΅ Π² Ρ‚ΠΎΠΌ смыслС, Ссли ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ BEGIN...END ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½Π° Π₯П Π²Ρ‹Π·Π²Π°Π½Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ) ΠΈ ΠΈΡ‰Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΌ ΠΈ Ρ‚. Π΄., ΠΏΠΎΠΊΠ° Π»ΠΈΠ±ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ подходящий ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π½Π΅ закончится Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ возвращаСтся стандартноС сообщСниС ΠΎΠ± ошибкС, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ тСкст ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дСйствия Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ΅ BEGIN...END ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° END ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π² нашСй ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ SP_DIVIDE. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ внСшнюю ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ SP_divide_all, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ SPJDFVIDE для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π° числа. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сильно ΡƒΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½, Π½ΠΎ ΠΎΠ½ позволяСт ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ способ ΠΈ смысл использования ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ тСкст нашСй Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:


CREATE PROCEDURE sp_test_except(Delltel DOUBLE PRECISION)

RETURNS (rslt DOUBLE PRECISION, status VARCHAR(SO))

AS

BEGIN

Status='Everything is Ok';

SELECT result FROM sp_divide(12,:Delitel) INTO :rslt;

SUSPEND;

WHEN EXCEPTION Zero_divide DO

BEGIN

Status='zero value found!';

rslt=-l;

SUSPEND;

END

END


Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ SP_DIVIDE. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Delitel Π½Π΅ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SP_DIVIDE выполняСтся Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ rslt помСщаСтся частноС ΠΎΡ‚ дСлСния, Π° статусная пСрСмСнная status ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'Everything is Ok'. Π’ случаС, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ситуация дСлСния Π½Π° Π½ΡƒΠ»ΡŒ, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ пСрСмСнная rslt Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° -1, Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ status Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ сообщСниС ΠΎΠ± ошибкС - 'zero value found!'. РазумССтся, Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ произвСсти ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΡΠΎΠ±ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ вновь ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок SQL ΠΈ InterBase

Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ошибок InterBase. Ошибка - это фактичСски Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅ΠΌΠΎΠ΅ InterBase. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый Ρ‡Ρ‚ΠΎ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ: Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ какая-Ρ‚ΠΎ ошибка, Ρ‚ΠΎ сСрвСр ΠΈΡ‰Π΅Ρ‚ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ просматривая всС ΡƒΡ€ΠΎΠ²Π½ΠΈ влоТСнности (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ) Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, начиная с Ρ‚ΠΎΠ³ΠΎ уровня, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка.

Если ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ выполняСтся ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅Π³ΠΎ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ производится ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок, такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто EXCEPTION стоит Π»ΠΈΠ±ΠΎ GDSCODE, Π»ΠΈΠ±ΠΎ SQLCODE:


WHEN GDSCODE SQLCODE <код_ошибки> DO

BEGIN

/*ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ*/

END


Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, стоит Π»ΠΈ Π² конструкции ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок GDSCODE ΠΈΠ»ΠΈ SQLCODE, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ошибки. Если стоит SQLCODE, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ошибки SQL, Π° Ссли GDSCODE - Ρ‚ΠΎ ошибки InterBase. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ошибки SQL являСтся ошибка с SQLCODE=-802 "Arithmetic exception, numeric overflow, or string truncation" ΠΈΠ»ΠΈ SQLCODE=-817 "Attempted update during read-only transaction" Бписок ошибок SQL ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ SQLCODE ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ "SQLCODE codes and messages'. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ошибки InterBase являСтся ошибка isc_bad_dbkey 335544322L "invalid database key".