|
|
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
Давно уже подозревал, что запросы нужно посылать серверу через связанные переменные. Намедни купил Кайта, прочитал и озаботился. Но вот как это сделать из приложения. Раньше посылал запрос вида: select * from TABLE where fileld1 = 123 а теперь надо select * from TABLE where field1 = :field01 но вот как серверу передать, что field01 связанная переменная ? если написать begin execute immediate 'select * from TABLE where field1 = :field01' end; ничего ведь в приложение не вернется !!! самое интересное, что RAD, на котором я работаю это делает и генерит в профайлере следующее name ":STK_TYPE_IDk0" type: float value: 3.00000 SELECT "STK_TYPE_ID","NOMINAL" FROM "T_STK_TYPE" WHERE "STK_TYPE_ID" = :STK_TYPE_IDk0 т.е. устанавливает перед запросом связанные переменые. Как ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 04:36:45 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
А слово USING не пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 06:42:31 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
USING ТО ЖЕ, ЧТО И EXECUTE IMMEDIATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 06:44:10 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
RTFM!!! 5 seconds finding == Example: EXECUTE IMMEDIATE 'DELETE FROM emp WHERE empno = :num' USING emp_id; Source: Oracle9i SQL Reference И НЕЧЕГО ТАК ОРАТЬ! :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 07:11:24 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
RTFM!!! 5 seconds finding == Example прочитай еще раз, когда поймешь и подумаешь - можешь написать, на этот раз толково ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 08:02:15 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
В PL/SQL связанные переменные ипользуются в динамическом SQL, в параметрезированных курсорах. В языках программирования есть специальные конструкции(методы, классы), которые позволяют использовать связанные переменные - это в каждом конкретном языке нужно смотреть как это реализуется. А непосредственно в PL/SQL есть возможность использовать связанные переменные, обьявляемые с помощью VARIABLE: Код: 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. 29. 30. 31. 32. 33. 34. 35. Или так: Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 09:22:46 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
Посмотри трейс, как это выглядит со стороны ORACLE по моему OCI автоматически заменяет литералы на связанные переменные. Или не OCI. В любом случае клиентские интерфейсы регулярно этим озабачиваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 10:21:33 |
|
||
|
СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
|
|||
|---|---|---|---|
|
#18+
2 DAV2: 1) на каком RADe сидишь? 2) RTFM USING Цитата: >USING ... >This clause specifies a list of input and/or output bind arguments . If you do not specify a parameter mode, it defaults to IN. Иными словами случай тот же, что при использовании курсора с параметрами. В твоем примере :field01 -- уже связанная (внешняя) переменная, а серверу для исполнения данного запроса требуется значение этой переменной. Соответственно значение и передается после USING, как это и было продемонстрировано в моем примере. Виноват, забыл подчеркнуть что передается значение. Но документацию читать все же следует :) Правильный текст должен быть такой: begin execute immediate 'select * from TABLE where field1 = :field01' USING 123 end; PS на счет "USING ТО ЖЕ, ЧТО И EXECUTE IMMEDIATE" -- будем считать этот шуткой ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2003, 14:54:20 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1990071]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
190ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 521ms |

| 0 / 0 |
