|
|
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
ASA9 WinXP v9.0.2.2542 Написал и отладил в ISQL скрипт. КОгда я этот скрипт попытался оформить в хранимку, при сохранении получаю ошибку Syntax error near temporary on line 3. Путем научного тыка я определил, какой фрагмент кода (отнюдь не line 3) влияет на появление этой ошибки, но почему она возникает понять не могу. Для воссоздания ситуации я сильно упростил логику скрипта. Итак: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 13:00 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Забыл добавить. Тело процедуры запущенное в ISQL (естественно без ALTER PROCEDURE) отрабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 13:03 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Попробуйте ради интереса написать: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 13:11 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
2ASCRUS: Вариант с Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:12 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Ggg_old2ASCRUS: Вариант с Код: plaintext 1. 2. 3. Патч ни причем. Это просто ошибка (кстати, не приведен текст ошибки) Присваивать можно либо так: Код: plaintext 1. Код: plaintext 1. 2. А твой запрос Код: plaintext 1. 2. эквивалентен Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:43 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Вы ошибаетесь - в стандарте SQL разрешено присваивание переменной в формате: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:52 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
ASCRUSВы ошибаетесь - в стандарте SQL разрешено присваивание переменной в формате: Код: plaintext Тем не менее SELECT Var=1 - это запрос, возвращающий одну запись с полем Var и значением 1. Так же как и SELECT 1 as Var И если в ASA 8.0.3 попробовать сделать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Процедура: Код: plaintext 1. 2. 3. 4. 5. тоже вернет запись с var=1 А эта - Код: plaintext 1. 2. 3. 4. 5. Неоднозначность. Но лень сейчас выискивать разруливание этих собачек в документации. Это как скобки в IF в паскале - лучше поставить лишние с запасом, чтоб не было сомнения. Точно так же и в любом софте - не оставляйте шансов для ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:51 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Никакой неоднозначности - просто нужно помнить что в ASA есть два диалекта: 1. WatcomSQL 2. TSQL Так вот в TSQL диалекте разрешается такие вещи делать, а в WatcomSQL нет. ASA при компиляции процедуры пытается понять, что это за диалект и компилить по его правилам. Соотвествующе нужно в целях борьбы с такими неоднозначностями диалектов все писать на одном диалекте - вообще необходимость в TSQL на ASA может возникнуть только по причинам совместимости с MSSQL или ASE, в других случаях лучше писать на WatcomSQL и не заморачиваться (особенно если учесть убогость TSQL по сравнению с WatcomSQL). Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 17:29 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Я первым делом подумал на то, что это проблемы из-за разных диалектов. Но например такая процедурка: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Но если добавить объявление например временной таблицы через declare local temporary table - и процедура уже не сохранится. Итого выходит, что проверщик диалекта sql не до конца строгий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 18:31 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
а нет ли какой-нибудь прагмы, чтобы подсказать ASA - "Мы пишем щас на TransactSQL | WatcomSQL" ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 18:56 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
--null--а нет ли какой-нибудь прагмы, чтобы подсказать ASA - "Мы пишем щас на TransactSQL | WatcomSQL" ??? Такой прагмой обычно является заголовок функции. Вернее ключевое слово AS или BEGIN. Watcom: create procedure aaaa begin declare .... select ... end; Transact: create procedure aaaa as declare .... select ... end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 19:33 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
White Owl Transact: create procedure aaaa as declare .... select ... end А begin то после as ты не забыл??? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 09:35 |
|
||
|
ASA. Создание процедуры. Глюк?
|
|||
|---|---|---|---|
|
#18+
Я White Owl Transact: create procedure aaaa as declare .... select ... end А begin то после as ты не забыл??? :-) Нет, не забыл. Там не нужен begin. Это специфическое отличие Transact диалекта. Можешь сходить в BOL и сам прочитать, там даже примеры есть с которыми можно поиграться. ASA SQL Reference SQL Statements CREATE PROCEDURE statement [T-SQL] Вот один абзац оттуда: Procedure body The body of a Transact-SQL procedure is a list of Transact-SQL statements prefixed by the AS keyword. The body of a Watcom-SQL procedure is a compound statement, bracketed by BEGIN and END keywords. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 18:51 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=110&tid=2013922]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 385ms |

| 0 / 0 |

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