Как в 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.
→ Ссылка