SUSPEND

4 отговора 267 прегледа
#1

SUSPEND

Здравейте, бихте ли ми разяснили, за какво се използва SUSPEND в Firebird при съхранените процедури.
10x

Отговор
в отговор на Junior #2

Re: SUSPEND

SUSPEND

Suspends execution of a select procedure until the next FETCH is issued and returns values to the calling application. Available in stored procedures only.

Syntax: SUSPEND;

Description The SUSPEND statement:

Suspends execution of a stored procedure until the application issues the next FETCH. Returns values of output parameters, if any. A procedure should ensure that all output parameters are assigned values before a SUSPEND. SUSPEND should not be used in an executable procedure. Use EXIT instead to indicate to
the reader explicitly that the statement terminates the procedure.

Отговор
в отговор на NickBass #3

Re: SUSPEND

Можеш ли да го обясниш с две думи на BG, защото нещо ми убягва.

Отговор
в отговор на Junior #4

Re: SUSPEND

Е... с две думи е малко трудно. Значи - STORED PROCEDURES се делят основно на два типа: такива, които връщат данни и такива, които не връщат данни.
SUSPEND е приложим само за първия тип.

Пример:

CREATE PROCEDURE P_SELECT_ARTICLES (
NAME_LIKE VARCHAR(30))
RETURNS (
ART_ID INTEGER,
ART_NAME VARCHAR(30))
AS
BEGIN
FOR SELECT
NOM_ID,
NOM_NAME
FROM
NOM_ARTICLES
WHERE
NOM_NAME LIKE :NAME_LIKE
INTO
:ART_ID, :ART_NAME
DO
SUSPEND;
END

Извикващото приложение пуска заявка
SELECT * FROM P_SELECT_ARTICLES('%цървули%')

Какво прави SUSPEND в примера: FOR SELECT ... цикли набора от записи, а
SUSPEND ги връща един по един към извикващото приложение.
Без SUSPEND процедурата няма да върне нито един ред към приложението и продавачката, която работи с него ще каже на дядо, че в момента цървули нема.

Отговор
в отговор на NickBass #5

Re: SUSPEND

Много благодаря!

Отговор