[MS SQL Server 2000] VIEW или UDF?

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Hello clalist,
============================================================
А что лучше использовать для формирования выборок?
Представления (VIEW) или Пользовательские функции (UDF)?

- удобнее
- практичнее
- производительнее

естественно речь идет не о выполнении каких-то серьезных операций (с IF-ELSE, WHILE, etc.), а просто о выборке...?
============================================================
И еще вопрос: насколько сильно тормозят обработку данных процедуры с EXISTS типа:

Код: Выделить всё

        SET @IDClass = -1
        IF      EXISTS (
                SELECT  IDClass
                FROM    Classes
                WHERE   Classes.Name = @NameClass
        )
                SET     @IDClass = (
                        SELECT  IDClass
                        FROM    Classes
                        WHERE   Classes.Name = @NameClass
                )
        RETURN @IDClass
я это делаю для того, что бы можно было обработать ситуацию в которой @NameClass задан неверно (не существует) и распознать по возвращаемому значению (-1)

Здесь фактически два раза производится одна и таже выборка!
Нельзя ли вводить временные теременные типа как с DECLARE @IDClass, чтобы выборку можно было сделать один раз, а использовать потом много раз (например два раза как в приведенном примере)?
============================================================
и еще вопрос: а наскольно сильно тормозит работу использование вызовов одних UDF из других?

--
Best regards,
Иван mailto:shkmail@inbox.ru


(Добавление)
- удобнее
Параметры в UDF можно передавать - этим всё сказано
И еще вопрос: насколько сильно тормозят обработку данных процедуры с EXISTS типа:
Помоему вот так одним запросом:

Код: Выделить всё

   SET     @IDClass = (
            SELECT  isnull(IDClass,-1)
            FROM    Classes
           WHERE   Classes.Name = @NameClass)
           RETURN @IDClass
Толмачёв И.Л. itolmachev@rosinter.ru

Иван,

1) Если речь идет о просто выборке (без IF-ELSE, WHILE, etc.), то и использовать можно просто SELECT, если конечно есть возможность принять результат произвольного запроса. Если же результат принимается только стандартными средствами в фиксированные файловые структуры, тогда и возникает нужда запрос заворачивать в представление (VIEW), чтобы импортировать как таблицу в словарь...

2) Да, результат выборки может быть пустым (NULL). Разрулить эту ситуацию помогает функция ISNULL. Там, откуда вызывается UDF, код которой приведен в вопросе, можно скромно но со вкусом изобразить:

ISNULL((SELECT IDClass FROM Classes WHERE Classes.Name=@NameClass),-1)

3) Я бы порекомендовал обратить внимание еще на одну возможность получить выборку - при помощи stored procedures.

С уважением,
---
Oleg Fomin oleg@fomin.info
Написал: ClaList(2)
Ответить