Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
15.05.2006, 10:54
|
|||
|---|---|---|---|
ASA 7.04/9.02: Stored procedure - баг или фитча? |
|||
|
#18+
Наткнулся на следующее: Шаг 1. Создал таблицу testtab с полями p00,f00,f01 (все integer) Шаг 2. Создал процедуру testproc. Внутри процедуры - единственная команда - "select * from testtab" Шаг 3. Запустил ISQL, выполнил call testproc - все прекрасно Шаг 4. Удалил в testtab колонку f01 Шаг 5. Снова запустил ISQL, выполнил call testproc - и тут получил ошибку "Column f01 not found" :) Цитата из Help: SELECT * finds all the columns currently in a table, so that changes in the structure of a table such as adding, removing, or renaming columns automatically modify the results of SELECT *. Попытка перезагруза сервера между шагами 4 и 5 ситуацию не изменила... Правда, если между шагами 4 и 5 просто пересохранить процедуру, то ошибка исчезает P.S. Сам-то редко пользуюсь в процедурах конструкциями select * ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.05.2006, 11:26
|
|||
|---|---|---|---|
|
|||
ASA 7.04/9.02: Stored procedure - баг или фитча? |
|||
|
#18+
Скомпиленая процедура хранится внутри сервера в виде select p00,f00,f01 from testtab. Так что это фича. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.05.2006, 11:40
|
|||
|---|---|---|---|
ASA 7.04/9.02: Stored procedure - баг или фитча? |
|||
|
#18+
Процедуры и представления компилируются и в них сохраняются описания параметров и полей результирующего набора данных (в том числе в метаструктуре БД). Естественно после изменения структуры БД, другого используемого представления или процедуры никто автоматически перекомпилировать процедуры и представления не будет. Для того, чтобы не допускать подобных ошибок (а это именно ошибка проектировщика, а не баг или фича), необходимо соблюдать следующие простые правила: 1. Никогда не писать в представлениях и процедурах SELECT *, а всегда указывать список нужных полей. 2. Явно описывать в процедурах и представлениях возвращаемый результирующий набор через ключевое слово RESULT. 3. Ну и естественно стараться перед проектированием БД собрать как можно полное ТЗ и сразу описать все поля, стремясь к ситуации, что поля могут добавляться, но желательно никогда удаляться. Если же и случается такая ситуация, то в принципе написать для ISQL шаблон, который с системных таблиц получит список представления, выполнил на них "ALTER VIEW ViewName RECOMPILE" и список ХП, на который выполнит "ALTER PROCEDURE". P.S. Странно, что не пользуетесь в ХП SELECT-ами. В отличие от представлений ХП получаются выгоднее и удобнее тем, что с их помощью можно сэмулировать параметризированные представления, в которых гораздо удобнее написать и вернуть сразу с параметрами запрос, где данных ХП в 9.0.2 могут сами использоваться в SELECT-ах. -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.05.2006, 12:36
|
|||
|---|---|---|---|
ASA 7.04/9.02: Stored procedure - баг или фитча? |
|||
|
#18+
To ACRUS: :) Я не говорил, что не пользуюсь select'ами в ХП (более того, на клиенте для получения Result Set предпочитаю выполнить call PROC нежели Select) - я сказал, что не пользуюсь конструкцией 'select * ' в ХП (как раз пункт 1 в Вашем ответе) :) P.S. Это просто был просто эксперимент - попытка выдать на клиента из процедуры результирующий набор данный с заранее неизвестным количеством столбцов - реално я, разумеется не проектировал БД под такие запросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.05.2006, 15:14
|
|||
|---|---|---|---|
ASA 7.04/9.02: Stored procedure - баг или фитча? |
|||
|
#18+
Тогда сорри, просто не правильно понял :) -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&mobile=1&tid=2012865]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 346ms |

| 0 / 0 |
