|
|
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
Есть простенькая процедура на Oracle Код: plsql 1. 2. 3. 4. 5. 6. 7. Вызываю через ADOCommand Код: pascal 1. 2. 3. 4. 5. 6. все работает. Но не нравятся мне выделенные строки. Можно ли как-то их убрать и заставить клиента самому подтянуть метаданные по параметрам? Вызов Код: pascal 1. приводит к полной очистке параметров, т.к. вызов Код: pascal 1. в TParameters.InternalRefreshюRefreshFromOleDB возвращает 0x80040E51 Провайдер OraOLEDB.Oracle.1 С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 18:30:36 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
ADOStoredProc не пробовал? P.S. Не надо АДО для Оракла использовать. Лучше старый DOA или AnyDAC возьми. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 19:25:39 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамADOStoredProc не пробовал?Нет. Интересует именно ADOCommand. В принципе можно достать все таким запросом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. но не вдохновляет Гаджимурадов РустамP.S. Не надо АДО для Оракла использовать.Так все плохо? Гаджимурадов РустамЛучше старый DOA или AnyDAC возьми.Сейчас интересует нечто бесплатное с поддержкой 12 оракла. Вполне вероятно, что впоследствии купим FireDAC. Я понимаю, что с AnyDAC на FireDAC переползти легко. Но бесплатные версии жутко древние ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 19:41:31 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_> В принципе можно достать все таким запросом Так первый вариант много лучше. Или ты хочешь свой патч делать? > Так все плохо? Я не слежу за их потугами, но AFAIU, ADO почти deprecated, нет смысла связываться для новых проектов, тем более для 12 оракла. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 20:47:03 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамADO почти deprecated, нетА на сайте оракла OraOLEDB свежий лежит. Впрочем, я тебя услышал. Спасибо за инфу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 21:11:36 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
> А на сайте оракла OraOLEDB свежий лежит. Так ты OLEDB и Delphi-шные ADO не путай... Впрочем, не настаиваю, работать с ней можно. Но заполнение out-параметров - стандартный подход, даже в .Net так делается. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 21:53:43 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
Подниму тему. Для будущих поколений. _Vasilisk_Вызов Код: pascal 1. приводит к полной очистке параметров, т.к. вызов Код: pascal 1. в TParameters.InternalRefreshюRefreshFromOleDB возвращает 0x80040E51 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. RefreshFromOLEDB, действительно не достает параметров. Но параметры достает RefreshFromADO. Чтобы она вызвалась нужно изменить CommandType с cmdText. Т.к. у нас процедура, то устанавливаем cmdStoredProc. Но тогда должен быть другой формат CommandText. Итого для процедуры _Vasilisk_ Код: plsql 1. 2. 3. делаем так Код: pascal 1. 2. 3. 4. 5. 6. Все работает. Только нужно помнить, что имя процедуры должно быть записано в том же регистре, что и в базе, иначе ADOCommand1.Parameters.Refresh вываливается с сообщением Project Project1.exe raised exception class EOleException with message 'Не удается найти текст сообщения с номером 0x80040e51 в файле сообщений OraOLEDB'.для CommandType = cmdText регистр значения не имеет А теперь отдельные грабли по возвращаемым строковым параметрам. У параметра есть свойство Size. Для CommandType = cmdText для всех параметров оно выставляется в -1. Для CommandType = cmdStoredProc после Parameters.Refresh оно выставляется в 0. Выполнение запроса (для любого CommandType) с выходными строковыми параметрами и установленных для них Size <= 0, получаем исключение Project Project1.exe raised exception class EOleException with message 'Неправильно определен объект Parameter. Предоставлены несогласованные или неполные сведения'.Если указать значение > 0, но меньше, чем длина возвращаемого значения, то для SQL типа CHAR возвращается NULL, а для VARCHAR значение обрезается до указанного числа символов. Если указать значение больше, чем длина возвращаемого значения, то для SQL типа CHAR значение добивается пробелами, а для VARCHAR возвращается как есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 20:11:42 |
|
||
|
ADO Command output параметры
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Если указать значение > 0, но меньше, чем длина возвращаемого значения, то для SQL типа CHAR возвращается NULL,Проверил. Оказалось не так. У меня в CHAR возвращается строковый GUID (38 символов). При Size < 300 возвращается NULL. При Size = 300 возвращается строка длиной 300 символов. 38 символов GUID и 300-38=262 пробелов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 20:22:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39555346&tid=2041473]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
382ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 679ms |

| 0 / 0 |
