|
|
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
На оракле 3 день до этого сидел на Microsoft. поэтому наверно че-то не понимаю. Написал процедуру она бегает по SYS.TAB и по опр условиям формирует Sequence и триггеры, но через execute im... создавать sequences не хочет. Помогите советом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 16:15:28 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
на сисовские таблы в принципе нельзя навесить триггера... смотри "Концепции" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 16:59:28 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
Я из sys.tab беру данные о таблица чтобы сгенерить для них триггера и сиквенсы и через exec запускаю формирование Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 18:54:45 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
что значит "не хочет"? Как звучит ошибка? ну и уберите ";" в конце строки в переменных vcSeqBody и vcSeqDropBody. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 19:38:02 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
Спасибо за точки с запятой sequence теперь создается и удаляется!!! Но теперь моя процедура вылетает на создании триггера! Вот триггер который она сгенерила Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 1.он создается 2.процедура на этом вываливается без сообщ об ошибке 3. если зайти в него через список объектов он с красненькой пометкой и ошибкой: Compilation errors for TRIGGER ARTDBA.ACCBAL1_INC Error: PLS-00103: Encountered the symbol "" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> cursor form current Line: 3 Text: declare И еще выделена строчка с DECLARE 4. Если же после захода в его редактирование нажать f8(execute) то он без ошибок создается. В чем прикол я не понимаю, а сделать надо. Напишите пож-та свои предположения или советы :<( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 20:36:20 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
слово declare используется только в анонимном pl/sql блоке. Уберите его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 21:31:59 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
В таком виде он орет Invalid trigger specification Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 21:39:02 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
Вот он злощаастный код который вылетает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 21:44:28 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
сорри, наврал с declare :-) В триггере блок трактуется как анонимный. Но тут как раз ";" после end нужна, т.к. она не является командой на выполнение (как в запросе). Ну и уберите ACCBAL1_INC в конструкции с "end;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 21:59:48 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
сейчас заметил - у вас "as" перед declare стоит - уберите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:01:23 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
And there is no need to commit. CREATE TRIGGER is a DDL and tehrefore implictly commits itself (actually DDL commits twice: before and after). SY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:10:36 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
К сож не помогает. As это я случайно оставил когда declare уберал на всякий случай еще и c AS пробовал. Он все время ругается на строку после FOR EACH ROW в не зависимости от того begin там или declare в ручную он не компилится пока не войдешь и не отредактируешь; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:12:15 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
You are missing semicolon ; . Remember, trigger body is PL/SQL, not SQL. PL/SQL end statement MUST have ; at the end. SY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:19:07 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
2 SY >You are missing semicolon ;. Remember, trigger body is PL/SQL, not SQL. PL/SQL >end statement MUST have ; at the end. я уже говорил, думаю товарищ исправил :-) 2 Lav запостите, пожалуйста еще раз триггер и сообщение об ошибке. судя по предидущему Error: PLS-00103: Encountered the symbol "" when expecting one of the following: begin function package pragma procedure subtype type use тут возможно лишний возврат строки, поэтому лучше отладить текст в sql*plus, например, а потом уже формировать строки для execute immediate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:27:00 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
vcTrIncBody:='CREATE OR REPLACE TRIGGER '||vcTName||'_INC ' ||'BEFORE INSERT ON '||vcTName||' FOR EACH ROW'||chr(13) ||'declare'||chr(13) ||' I integer;'||chr(13) ||'begin'||chr(13) ||' if :new.'||vcPKColName||' is null then'||chr(13) ||' SELECT '||vcTName||'_SEQ.NextVal into :new.'||vcPKColName||' from Dual;'||chr(13) ||' else'||chr(13)||' SELECT '||vcTName||'_SEQ.NextVal into I from dual;'||chr(13) ||' while :new.'||vcPKColName||'>I loop '||chr(13)||' SELECT '||vcTName||'_SEQ.NextVal into I from dual;'||chr(13) ||' end loop;'||chr(13)||' end if;'||chr(13) ||'end;'; CREATE OR REPLACE TRIGGER ACCBAL1_INC BEFORE INSERT ON ACCBAL1 FOR EACH ROW declare I integer; begin if :new.IDACCBAL1 is null then SELECT ACCBAL1_SEQ.NextVal into :new.IDACCBAL1 from Dual; else SELECT ACCBAL1_SEQ.NextVal into I from dual; while :new.IDACCBAL1>I loop SELECT ACCBAL1_SEQ.NextVal into I from dual; end loop; end if; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:30:24 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
Compilation errors for TRIGGER ARTDBA.ACCBAL1_INC Error: PLS-00103: Encountered the symbol "" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> cursor form current Line: 2 Text: declare ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:31:24 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
Just noticed: you are using CHR(13) which is LINE FEED!!! It should be CHR(10) which is CARRIAGE RETURN: Код: 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. SY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:48:25 |
|
||
|
Не создается sequence?!?
|
|||
|---|---|---|---|
|
#18+
видите, у меня все работает без ошибок, значит проблема в формировании строки. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2003, 22:48:35 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32183062&tid=1990008]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 498ms |

| 0 / 0 |
