|
|
|
Проблема вызова OVERLOAD процедур Oracle
|
|||
|---|---|---|---|
|
#18+
В пакете Oracle есть две процедуры с одинаковым именем и одинаковым количеством параметров (но набор параметров по типам разный). При вызове из PHP Oracle возвращает ошибку ORA-06550: line 1, column 7: PLS-00307: too many declarations of 'proc_name' match this call. Я точно знаю, что это не ошибка ORACLE, при вызове из кода ORACLE всё отрабатывает хорошо. Это неустранимая проблема PHP или где-то что-то надо настроить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:18:12 |
|
||
|
Проблема вызова OVERLOAD процедур Oracle
|
|||
|---|---|---|---|
|
#18+
Если вы абсолютно уверены, что из самого Oracle вызов проходит корректно - то оформите вызов процедуры ввиде анонимного блока и вызывайте уже его из PHP Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:39:02 |
|
||
|
Проблема вызова OVERLOAD процедур Oracle
|
|||
|---|---|---|---|
|
#18+
ORA-06550 никак не може тбыть неустранимой ошибкой php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 14:44:59 |
|
||
|
Проблема вызова OVERLOAD процедур Oracle
|
|||
|---|---|---|---|
|
#18+
Да это явно проблема самого оракла. Просто когда топикстартер вызывает процедуру "из Оракла" он на 90% передаёт в качестве параметров уже объявленные переменные, то есть тип переменных, переданных в параметры известен PL/SQL компилятору (как в вышеприведённом мноё примере). А когда он биндит параметры из PHP - то у него начинает работать неявное преобразование типов. Скорее всего топикстартер толкает из PHP что-то типа Код: php 1. В данном случае Oracle неоткуда взять информацию о типах переменных, котоыре пришли на вход. Срабатывает автоматическое приведение типов и в результате иммем ORA-06550. Поэтому, как вариант, можно еще посоветовать прямо в процессе парсинга делать явное приведение типов: Код: php 1. 2. 3. тогда по идее Оракл должен подхватить правильный вариант перегруженной процедуры. Но вариант с анонимным блоком работает железобетонно. Т.к. весь вызов целиком обрабатывается на стороне Oracle и драйвер OCI вообще не при делах становится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2012, 15:03:47 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=37780567&tid=1465209]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
34ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 380ms |

| 0 / 0 |
