Как в Firebird создать процедуру для поиска строки в таблице?
мне нужна помощь с созданием процедуры для Firebird (Версия 2.5, если это важно), которая будет осуществлять поиск строки в таблице, после того как пользователь введёт в текстовое поле программы какие-нибудь данные (с взаимодействием с процедурой из своей программы я разберусь сам). В этой хранимой процедуре входящим параметром должна быть переменная с текстом для поиска, а выходящим параметром найденная строка или переменная некого типа. Буду признателен, как объяснениям, так и просто готовому коду, но сопроводите его пожалуйста хотя бы краткими комментариями, потому что я хочу действительно разобраться, а не просто скопировать. Спасибо!
Ответы (1 шт):
Простейший пример. Есть таблица
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME VARCHAR(127) NOT NULL
);
Поиск можно сделать такой процедурой
CREATE OR ALTER PROCEDURE NEW_PROCEDURE (
INPUT_TEXT VARCHAR(127)
)
RETURNS (
ID INTEGER,
NAME VARCHAR(127)
)
AS
BEGIN
FOR
SELECT
FIRST 10
T.ID, T.NAME
FROM TABLE_1 T
WHERE T.NAME CONTAINING :INPUT_TEXT
INTO
:ID, :NAME
DO
SUSPEND;
END
Пояснения:
FIRST 10- выводить не более 10 результатов. Если нужны все, просто убрать эту конструкцию.A CONTAINING B- истинно, еслиAсодержитBкак подстроку. Еще естьA STARTING WITH B- поиск по началу, и тривиальноеA = B.