Выполним запрос с переменными в качестве параметров:
var @nYear = 2004, @Name = 'Метель';
select * from BOOK where PYEAR = @nYear or NAME = @Name;
Для указания переменных в качестве параметра в теле запроса перед именем операнда используется @.
Сохранение результата запроса в переменной
Результат запроса по одной таблице можно сохранить в переменной. Переменная резервируется функцией CursAlloc. Последний результат запроса, после последнего select (исторически называющийся Sab), можно извлечь из текущего курсора и сохранить в этой переменной. Курсор не содержит информации об отобранных полях, а лишь о найденных записях.
Пример 1. Сохранение результата обычного запроса.
// резервируем переменную для результата
var @hc = CursAlloc();
// выполняем запрос
select * from READER where LNAME like 'П*ро*';
// получаем Sab и сохраняем его в выделенной переменной
SabToCurs(@hc, SabFromCurs(ThisCurs()));
// освободить курсор
CursFree(@hc);
Пример 2. Сохранение результата динамического SQL.
// резервируем переменную для результата
var @hc = CursAlloc();
var @q;
q = 'PYEAR > 1996';
// выполняем запрос, в переменную hc сохраняем результат
execute immediate 'select * from BOOK where '+@q+';\n'+
'SabToCurs('+@hc+', SabFromCurs(ThisCurs()));';
// не будем освобождать курсор, используем его в следующем примере