Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
Например, объявляем тип: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. затем делаем так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Почему бы не использовать refcursor? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 11:55 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
ты можешь сделать select * from mycursor? (mycursor - переменная либо функция возвращающая refcursor) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 12:37 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
st_sergты можешь сделать select * from mycursor? (mycursor - переменная либо функция возвращающая refcursor) Я то могу. Я вот не пойму следующее: (написано на Оракле) Код: 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. Почему курсор не используется в этой функции вместо record? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 12:41 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
и что? из функции возвращается переменная record типа, что тут криминального? и причем тут set of и refcursor? ps. покажите мне sql (не pl/[pg]sql) код который выбирает записи из курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 12:51 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
st_sergи что? из функции возвращается переменная record типа, что тут криминального? и причем тут set of и refcursor? ps. покажите мне sql (не pl/[pg]sql) код который выбирает записи из курсора. Мы же можем написать так?: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 12:55 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
этот код будет несколько бессмысленным, для чего возвращать закрытый курсор? Вам совет, что б не задавать странных воросов прочитайте "PL/SQL User’s Guide and Reference" для оракла и "Chapter 37. PL/pgSQL - SQL Procedural Language" для пг Это не займет много времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 13:03 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
st_sergэтот код будет несколько бессмысленным, для чего возвращать закрытый курсор? Вам совет, что б не задавать странных воросов прочитайте "PL/SQL User’s Guide and Reference" для оракла и "Chapter 37. PL/pgSQL - SQL Procedural Language" для пг Это не займет много времени Если его не закрывать, то смысл есть же? Почему бы тогда так не написать?: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 13:10 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
Oracle docs What Is a Record? A record is a group of related data items stored in fields, each with its own name and datatype. Suppose you have various data about an employee such as name, salary, and hire date. These items are logically related but dissimilar in type. A record containing a field for each item lets you treat the data as a logical unit. Thus, records make it easier to organize and represent information. The attribute %ROWTYPE lets you declare a record that represents a row in a database table. However, you cannot specify the datatypes of fields in the record or declare fields of your own. The datatype RECORD lifts those restrictions and lets you define your own records. PostgreSQL docs 37.8. Cursors Rather than executing a whole query at once, it is possible to set up a cursor that encapsulates the query, and then read the query result a few rows at a time. One reason for doing this is to avoid memory overrun when the result contains a large number of rows. (However, PL/pgSQL users do not normally need to worry about that, since FOR loops automatically use a cursor internally to avoid memory problems.) A more interesting usage is to return a reference to a cursor that a function has created, allowing the caller to read the rows. This provides an efficient way to return large row sets from functions ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 13:19 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
Я запутался немного :-( В общем, мне нужн переписать этоу функцию (см. ниже) на PostgreSQL. Что там лучше использовать: курсор, тип или еще что? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 13:22 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
Используй record: FOR rec IN EXECUTE 'SELECT distinct on (d.question_id) d.question_id, 0 as answer_id, q.text as text FROM merch_ansdata_base d, get_questions(''character'') q WHERE d.question_id=q.id and d.object_id=' || quote_literal(object_id) || ' and d.save_date::date=' || quote_literal(check_date) || ' and d.user_id=' || quote_literal(user_id) || '' LOOP question_id := rec.question_id; answer_id := rec.answer_id; value := ''; name := rec.text; RETURN NEXT; END LOOP; Курсор тебе никогда не понадобится, поскольку названная конструкция служит оберткой для курсора и придумана именно для того, чтобы не нужно было напрямую работать с курсором. Эта же конструкция может вызываться и проще, без использования EXECUTE, но тогда в производительности потеряешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 20:37 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
Pechnikov AlexeyКурсор тебе никогда не понадобится Гм, неужели никогда? Pechnikov Alexeyконструкция служит оберткой для курсора и придумана именно для того, чтобы не нужно было напрямую работать с курсором Работа с курсором нонче моветон? Pechnikov Alexeyбез использования EXECUTE, но тогда в производительности потеряешь Вы фанат dynamic sql? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 14:13 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
2alosha Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Т.о. ваш оракловский код будет почти 1 в 1 переписан на пг примерно так: Код: 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. PS. Обратите внимание на то что для оракла '' is null - истинно, а для пг - ложно и возмитесь за доки ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 14:27 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
Я вообще не фанат чего-либо, и dynamic sql не исключение. Но OLAP-анализ делаю именно таким методом. Если знаешь иной способ обрабатывать порядка миллиона или десятка миллионов записей в реалтайме (на машине типа целерон 2 гигагерц и 256 оперативки, одновременно работают до 5 клиентов), поделись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2007, 19:31 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
st_serg2alosha Спасибо большое. У меня есть еще одна проблема, что когда пишу Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 08:20 |
|
||
|
В чем отличие между record и курсором?
|
|||
|---|---|---|---|
|
#18+
st_serg2alosha еще один вопрос в догонку: у меня есть например такая функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. Зачем нужно было давать имена полям: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 09:17 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34353007&tid=2005664]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 409ms |

| 0 / 0 |
