> ÓÏÂÓÔ×ÅÎÎÏ ËÁË × InterBase 7.5 ÐÏÌÕÞÉÔØ ÔÅËÕÝÉÊ CONNECTION_ID(ÁÎÁÌÏÇ
> CURRENT_CONNECTION × FireBird)
> ÔÏ ÅÓÔØ ÔÏ, ÞÔÏ ÈÒÁÎÉÔÓÑ × ÔÁÂÌÉÃÅ TMP$ATTACHMENTS × ÐÏÌÅ
TMP$ATTACHMENT_ID
> ÄÌÑ ÉÍÅÎÎÏ ÔÅËÕÝÅÇÏ ÓÏÅÄÉÎÅÎÉÑ.

ÉÔÁË, ÏÐÙÔÎÙÍ ÐÕÔÅÍ ÎÁÊÄÅÎ ÓÐÏÓÏÂ ÐÏÌÕÞÉÔØ ÔÅËÕÝÉÊ ATTACHMENT_ID:

select ta.tmp$attachment_id
from tmp$attachments ta
where ta.tmp$state='ACTIVE'

ÉÌÉ ÐÒÏÃÅÄÕÒÏÊ ÔÁË:

CREATE PROCEDURE GET_ATTACHMENT_ID
RETURNS (
    ATTACHMENT_ID INTEGER)
AS
begin
  attachment_id=0;
  for select ta.tmp$attachment_id
      from tmp$attachments ta
      where ta.tmp$state='ACTIVE'
      into :attachment_id do begin
     suspend;
     exit;
  end
  suspend;
end

× ÏÂÝÅÍ, ÐÏÈÏÖÅ, ÞÔÏ × ÔÁÂÌÉÃÅ TMP$ATTACHMENTS ÐÏÌÅ TMP$STATE ÄÌÑ ÔÅËÕÝÅÇÏ
ÓÏÅÄÉÎÅÎÉÑ ÐÏÍÅÞÁÅÔÓÑ ËÁË 'ACTIVE'.

ÈÏÔÑ ÍÏÑ ÐÒÏÂÌÅÍÁ ÕÖÅ ÍÏÖÎÏ ÓËÁÚÁÔØ ÒÅÛÅÎÁ, ×ÏÐÒÏÓ ÐÏ ÐÒÅÖÎÅÍÕ ÏÓÔÁÅÔÓÑ
ÁËÔÕÁÌÅÎ Ó ÁËÁÄÅÍÉÞÅÓËÏÊ ÃÅÌØÀ:
ÍÏÖÎÏ ÌÉ ÐÏÌÕÞÉÔØ CONNECTION_ID(CURRENT_CONNECTION) ÉÌÉ ATTACHMENT_ID
ÐÏÓÒÅÄÓÔ×ÏÍ keyword, ËÁË ÎÁÐÒÉÍÅÒ USER.
ÐÒÏÓÔÏ ÜÔÏ ÒÅÁÌØÎÏ ÕÄÏÂÎÅÅ ÉÓÐÏÌØÚÏ×ÁÔØ × ÎÕÖÎÙÈ ÍÅÓÔÁÈ, ÞÅÍ [SELECT ...],
ÄÁ É ÒÁÂÏÔÁÔØ, ÐÏÌÁÇÁÀ, ÐÏÂÙÓÔÒÅÅ ÂÕÄÅÔ... ÎÁÐÒÉÍÅÒ × ËÏÎÔÅËÓÔÅ ×ÙÚÏ×Á
ÃÅÐÏÞËÉ(ÓÔÅËÁ) SP, ËÁÖÄÁÑ ÉÚ ËÏÔÏÒÙÈ ÄÁÎÎÕÀ ÈÒÅÎØ ÐÒÏ×ÅÒÑÅÔ.



Ответить