|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
Добрый день. Необходимо сделать проверку на существование произвольной процедуры, которая будет дергаться через динамический SQL Сейчас делаю примерно следующее Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
Может есть какой-то более элегантный способ это проверить? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 12:37 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagor, че-нить про обработку ошибок слышали ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 12:40 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
DВА, По логике нужно проверять наличие до её запуска ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 12:43 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorDВА, По логике нужно проверять наличие до её запуска с этим отлично справляется ядро, отсутствующую не запустит )) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 12:49 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
DВА, я понимаю, но необходимо выводить ошибку заранее, до запуска процедуры, чтобы использующие данный механизм пользователи на раннем этапе увидели ошибку, а не во время работы функционала ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:14 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorDВА, я понимаю, но необходимо выводить ошибку заранее, до запуска процедуры, чтобы использующие данный механизм пользователи на раннем этапе увидели ошибку, а не во время работы функционала dbms_sql.parse подойдет? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:22 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagor, just for fun Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 13:37 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorпроверку на существование произвольной процедурыУ произвольной процедуры произвольная сигнатура и не одна. Существование или несуществование процедуры не означает возможность/невозможность ее выполнения.Да нуdbms_sql.parse подойдет?Для генерации sql с параметрами вариант требует того же, что пытался изобрести автор.xtenderjust for funall_ не вернет процедуры, доступные через роль, а dba_ вернет даже недоступные. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 14:35 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorDВА, я понимаю, но необходимо выводить ошибку заранее, до запуска процедуры, чтобы использующие данный механизм пользователи на раннем этапе увидели ошибку, а не во время работы функционала а как гарантировать, что за время от проверки до запуска процедура не изменилась, не появилась и не исчезла типа уже придумали? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 14:42 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
-2-Да нуdbms_sql.parse подойдет?Для генерации sql с параметрами вариант требует того же, что пытался изобрести автор.Можно и без параметров, достаточно проверить sqlerrm от ORA-06550 на 'PLS-00201' и 'PLS-00302'. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 16:21 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorНеобходимо сделать проверку на существование произвольной процедуры, которая будет дергаться через динамический SQL Может есть какой-то более элегантный способ это проверить? Для начала: "существование" != "будет дергаться". Проверка в ALL_PROCEDURES значит "вижу" но не значит могу выполнить. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 17:15 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
Да ну, Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
Вроде норм ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 19:21 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
Например? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 19:34 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagor, Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
Неприятно конечно, если такую процедуру передадут) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2019, 19:52 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorМожет есть какой-то более элегантный способ это проверить? проверте свою функцию напр. для stax.my_proc; где stax ето owner ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 10:01 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagorfeagor, Код: plsql 1. 2. 3. 4. 5. 6.
Неприятно конечно, если такую процедуру передадут)dbms_sql.parse выполняет ddl, блок begin..end таковым не является, так что ничего страшного. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 12:04 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
Да нуdbms_sql.parse выполняет ddl, блок begin..end таковым не является, так что ничего страшного.функцией-то от этого оно не стало... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 20:20 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
feagor Код: plsql 1. 2. 3. 4.
dbms_utility.name_tokenize Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2019, 20:41 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
xtenderДа нуdbms_sql.parse выполняет ddl, блок begin..end таковым не является, так что ничего страшного.функцией-то от этого оно не стало... C учетом feagorнеобходимо выводить ошибку заранее, до запуска процедуры, чтобы использующие данный механизм пользователи на раннем этапе увидели ошибку, а не во время работы функционала никаких новых рисков такая проверка не добавляет. Защита от инъекций на этапе запуска процедуры - это отдельная тема, ТС ее не поднимал. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 01:32 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
Да нуЗащита от инъекций на этапе запуска процедуры - это отдельная тема, ТС ее не поднимал. я так и не понял, чем инекция опасна для parse? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 08:40 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
xtender dbms_utility.name_tokenize Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ORA-06550: Строка 2, столбец 33: PLS-00302: component 'ORA_MAX_NAME_LEN' must be declared Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 16:57 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
Stax, да это так в голову взбрело, инъекции в рамках темы не рассматриваются ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2019, 16:57 |
|
Проверить существует ли указанная процедура
|
|||
---|---|---|---|
#18+
StaxДа нуЗащита от инъекций на этапе запуска процедуры - это отдельная тема, ТС ее не поднимал. я так и не понял, чем инекция опасна для parse? ..... staxdocs.oracle.com PARSE Every SQL statement must be parsed by calling the PARSE Procedures. Parsing the statement checks the statement's syntax and associates it with the cursor in your program. You can parse any DML or DDL statement. DDL statements are run on the parse , which performs the implied commit. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2019, 14:12 |
|
|
start [/forum/topic.php?fid=52&msg=39820738&tid=1882430]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
1ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 149ms |
0 / 0 |