Вообщем процедура с входяшей переменной типа VARCHAR, исходящей integer. Если входящее значение найдено в таблице, вернуть 0, если не найдено - 1.
Приведите примерчик.
Процедуры с использованием if..then..else...
Re: Процедуры с использованием if..then..else...
STEEL писал(а):Вообщем процедура с входяшей переменной типа VARCHAR, исходящей integer. Если входящее значение найдено в таблице, вернуть 0, если не найдено - 1.
Приведите примерчик.
CREATE PROCEDURE PROCEDURE1 (
INPUT_VALUE VARCHAR(XX)
RETURNS ( RESULT INTEGER)
AS
BEGIN
SELECT COUNT(*) FROM TABLE1
WHERE COLUMN1=:INPUT_VALUE
INTO :RESULT;
if (:RESULT = 0) then RESULT = -1
else RESULT = 0;
SUSPEND
END;
Это будет работать на любом сервере. Если используется Firebird 1.5 и выше или Yahill то можно использовать Select без агрегата (быстрее работает), и проверять ROW_COUNT
Последний раз редактировалось Vit 05 ноя 2005, 20:49, всего редактировалось 1 раз.
Очень сорри. Правильно будет такSTEEL писал(а):А гды ты INPUT_VALUE сравниваешь с тем, что есть в таблице?
CREATE PROCEDURE PROCEDURE1 (
INPUT_VALUE VARCHAR(XX)
RETURNS ( RESULT INTEGER)
AS
BEGIN
SELECT COUNT(*) FROM TABLE1
WHERE COLUMN1=:INPUT_VALUE
INTO :RESULT;
if (:RESULT = 0) then RESULT = -1
else RESULT = 0;
SUSPEND
END;
Выше приведенный код тоже нехрена бы не заработал. Дело в том, что даже если там не хватает какой-то точки с запятой, работать уже ничего не будет. Благо догадался
Законченный вариант.
Законченный вариант.
Код: Выделить всё
СREATE PROCEDURE PROC (
BARCODE VARCHAR(15))
RETURNS (
RESULT INTEGER)
AS
begin
SELECT COUNT(*) FROM BARCODES
WHERE ARRAY=:BARCODE
INTO :RESULT;
IF (:RESULT = 0) THEN RESULT = -1;
ELSE RESULT = 0;
suspend;
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34