Аргументы и параметры
Предложения SQL, которые должны обрабатываться с помощью PREPARE, не могут включать каких-либо обращений к переменным включающего языка. Они могут, однако, содержать параметры, обозначаемые в исходном формате предложения вопросительными знаками. Параметры могут использоваться всюду, где допускаются переменные включающего языка.
Например:
ИСХОДНЫЙ_SQL = 'DELETE
FROM SP
WHERE КОЛИЧЕСТВО > ?
AND КОЛИЧЕСТВО < ?';
ЕХЕС SQL PREPARE ОБЪЕКТНЫЙ _ SQL FROM :ИСХОДНЫЙ_SQL;
Аргументыдля замещения параметров специфицируются с помощью фразы USING предложения EXECUTE, обеспечивающего исполнение сформированного предложения. Например:
ЕХЕС SQL EXECUTE ОБЪЕКТНЫЙ_SQL USING
: НИЖНЕЕ_ЗНАЧЕНИЕ, : ВЕРХНЕЕ_ЗНАЧЕНИЕ;
Фактически исполняемое в данном примере предложение эквивалентно обычному предложению встроенного SQL:
ЕХЕС SQL DELETE FROM SP WHERE
КОЛИЧЕСТВО > : НИЖНЕЕ_ЗНАЧЕНИЕ
AND КОЛИЧЕСТВО < :ВЕРХНЕЕ_ЗНАЧЕНИЕ;
В общем случае фраза USING предложения EXECUTE имеет формат:
USING аргумент[, аргумент] . . .
где каждый «аргумент» в свою очередь имеет формат:
: переменная — включающего — языка [: переменная — включающего — языка]
точно такой же, как и у ссылки на целевую переменную во фразе INTO. Необязательная вторая переменная включающего языка представляет собой индикаторную переменную неопределенного значения. При этом n-й аргумент в списке аргументов соответствует n-му параметру, т. е. n-му вопросительному знаку, в исходном формате обрабатываемого PREPARE предложения,