|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
Задал глобальную переменную в процедуре. Код: plsql 1. 2. 3.
Выдает ошибку ORA-00904: "MAY": invalid identifier Каким форматом мне нужно задать переменную v_date , чтобы не выдавало ошибку ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:03 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous, Код: plsql 1.
Выдаёт нормальный результат, проблема где-то в другом месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:15 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
crutchmaster AleksRous, Код: plsql 1.
Выдаёт нормальный результат, проблема где-то в другом месте. raise_application_error (-20004 , v_date); Выдал ORA-20004: 19-MAY-20 Отдельный SELECT норм выдает в процедуре 19-MAY-20 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:22 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous, Ну, всё правильно, он cast в строку делает, а у тебя в настройках такой дефолтный формат даты. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 10:47 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
crutchmaster AleksRous, Ну, всё правильно, он cast в строку делает, а у тебя в настройках такой дефолтный формат даты. Как задать верный формат , слажите пжт ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:13 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous Задал глобальную переменную в процедуре. Код: plsql 1. 2. 3.
Выдает ошибку ORA-00904: "MAY": invalid identifier Каким форматом мне нужно задать переменную v_date , чтобы не выдавало ошибку ? Ошибка в какой строке? Пример вызова и полное сообщение об ошибке. Скорее всего, у Вас где-то вызов: Код: plsql 1.
Что приводит к неявному преобразованию перед вызовом: Код: plsql 1.
А поскольку у to_char нет формата, то используется формат по умолчанию. В результате, Вы получаете ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:22 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous crutchmaster AleksRous, Ну, всё правильно, он cast в строку делает, а у тебя в настройках такой дефолтный формат даты. Как задать верный формат , слажите пжт ? Не нужно задавать формат по умолчанию, аккуратнее отслеживайте преобразования типов ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:23 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous Как задать верный формат , слажите пжт ? Не трогай лучше его. Проблема где-то в другом месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:40 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
crutchmaster AleksRous Как задать верный формат , слажите пжт ? Не трогай лучше его. Проблема где-то в другом месте. например Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ORA-00904: "MAY": invalid identifier ORA-06512: at line 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 12:49 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous crutchmaster пропущено... Не трогай лучше его. Проблема где-то в другом месте. например Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ORA-00904: "MAY": invalid identifier ORA-06512: at line 7 В результате получишь: Код: plsql 1.
То есть все равно что попытаться выполнить: Код: plsql 1.
Вопросы есть? Чему равно numeric выражение: 1-MAY-20 Начни документации https://docs.oracle.com/database/121/LNPLS/dynamic.htm#GUID-7E2F596F-9CA3-4DC8-8333-0C117962DB73 7 PL/SQL Dynamic SQL Вопросы есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 13:17 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
Vadim Lejnin AleksRous пропущено... например Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Я понял вас выдает правильно то что в NLS_DATE_FORMAT , но как прописать чтобы селект прокатил ORA-00904: "MAY": invalid identifier ORA-06512: at line 7 В результате получишь: Код: plsql 1.
То есть все равно что попытаться выполнить: Код: plsql 1.
Вопросы есть? Чему равно numeric выражение: 1-MAY-20 Начни документации https://docs.oracle.com/database/121/LNPLS/dynamic.htm#GUID-7E2F596F-9CA3-4DC8-8333-0C117962DB73 7 PL/SQL Dynamic SQL Вопросы есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:07 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous Vadim Lejnin пропущено... В результате получишь: Код: plsql 1.
То есть все равно что попытаться выполнить: Код: plsql 1.
Вопросы есть? Чему равно numeric выражение: 1-MAY-20 Начни документации пропущено... Вопросы есть? Я понял вас выдает правильно то что в NLS_DATE_FORMAT , но как прописать чтобы селект прокатил ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 15:16 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous, Вы ничего не поняли 1) Мессир, NLS_DATE_FORMAT зависит от настроек сессии. Настройки сессии могут быть любыми. Поэтому правильно написанные программа не должна от них зависеть, если зависимость есть, то это так называемая NLS BOMBA 2) Что понять, разберитесь хотя бы, почему у Вас вместо операции со строкой, как Вы хотели, получилось number выражение 3) Чтобы контролировать, что же Вы пытаетесь выполнить, добавьте тестовый вывод SQL строки, протестируйте полученную строку в другой сессии, и только после этого можно использовать execute immediate DECLARE v_date date:= TO_DATE(TO_CHAR('01/05/2020'),'DD/MM/YYYY') ; v_cmd varchar2(1024); BEGIN v_cmd :='SELECT * FROM DUAL WHERE DUMMY = ' || to_char(v_date) || '' ==> dbms_output.put_line(v_cmd); >>>--<<< EXECUTE IMMEDIATE 'SELECT * FROM DUAL WHERE DUMMY = ' || to_char(v_date) || '' ; END ; / ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 16:45 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous, SRC забыл добавить: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 16:47 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous, откройте для себя литералы date и ,имхо, всё наладится Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 17:58 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
А если так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
END; Мне нужно объявить глоб. переменную , чтобы в каждой процедуре не менять. В пакете около 50 процедур. Спасибо вам добрые люди за потраченное на меня время ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 08:48 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
Заданите вопрос почему именно EXECUTE IMMEDIATE , отвечу там Код: xml 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 08:50 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
этот вариант прокатит Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
но не v_date VARCHAR2(50) := SYSDATE ; ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:03 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous Код: plsql 1.
Если это писал привыкший к временным таблицам MSSQL-щик, лучше переписать. Проблем в любой БД и так хватает, чтобы к ним добавлять проблемы динамического SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 10:36 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
AleksRous, 1) Если Вы посмотрите синтаксис EXECUTE IMMEDIATE Statement Вы с удивлением увидите кляузы USING и INTO 2) Использовать строковое представление data, да еще со встроенными ковычками, это ампутация гланд через нетрадиционное отверстия 3) Если Вы перечитаете "Как правильно задавать вопросы", то там сказано что нужно рассказывать что Вы хотите сделать, и только потом как. Иначе получается пункт 2 p.s. Понятно что у Вас не хватает опыта в oracle, но решая задачи, как Вы себе это представляете, Вы лепите экзотические конструкции, мужественно борясь с целыми россыпями граблей. Сформулируйте что собственно Вы хотите, Вам подскажут как это решается правильно. Вот например комментарии по Вашему решению: Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:17 |
|
ORA-00904: invalid identifier
|
|||
---|---|---|---|
#18+
Vadim Lejnin AleksRous, 1) Если Вы посмотрите синтаксис EXECUTE IMMEDIATE Statement Вы с удивлением увидите кляузы USING и INTO 2) Использовать строковое представление data, да еще со встроенными ковычками, это ампутация гланд через нетрадиционное отверстия 3) Если Вы перечитаете "Как правильно задавать вопросы", то там сказано что нужно рассказывать что Вы хотите сделать, и только потом как. Иначе получается пункт 2 p.s. Понятно что у Вас не хватает опыта в oracle, но решая задачи, как Вы себе это представляете, Вы лепите экзотические конструкции, мужественно борясь с целыми россыпями граблей. Сформулируйте что собственно Вы хотите, Вам подскажут как это решается правильно. Вот например комментарии по Вашему решению: Код: plsql 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.
Спасибо я вас понял ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 19:18 |
|
|
start [/forum/topic.php?fid=52&fpage=45&tid=1881231]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 167ms |
0 / 0 |