Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
function() ... v_Operations.extend(); v_Operations(v_Operations.count) := v_CurrentOperation; ... end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:04 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshafunction() ... v_Operations.extend(); v_Operations(v_Operations.count) := v_CurrentOperation; ... end;Ну ты тогда расскажи местному сообществу, что в Оракле делает эта конструкция. Тебя вообще учили тому, что программный код нужно анализировать в целом, а не построчно переводить его с одного языка на другой? Или не учили? Приведенный тобой кусок - скорее всего, вырезка из цикла по заполнению данными PL/SQL-коллекции . Скажи, многие ли программисты, работающие только с PostgreSQL знают о том, что есть такое "коллекция" в Оракле и как с ней работать в том же оракле, чтобы рассказать тебе, как переписать сей код с PL/SQL на PG/SQL? я думаю, что таких не найдется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:22 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей aloshafunction() ... v_Operations.extend(); v_Operations(v_Operations.count) := v_CurrentOperation; ... end;Ну ты тогда расскажи местному сообществу, что в Оракле делает эта конструкция. Тебя вообще учили тому, что программный код нужно анализировать в целом, а не построчно переводить его с одного языка на другой? Или не учили? Приведенный тобой кусок - скорее всего, вырезка из цикла по заполнению данными PL/SQL-коллекции . Скажи, многие ли программисты, работающие только с PostgreSQL знают о том, что есть такое "коллекция" в Оракле и как с ней работать в том же оракле, чтобы рассказать тебе, как переписать сей код с PL/SQL на PG/SQL? я думаю, что таких не найдется. Массив v_Operations поначалу пустой, поэтому мы не можем ему что то присвоить, поэтому в Оракле мы делаем так, что увеличиваем массив на еденицу. Затем мы еже непустому массиву можем сделать это присвоение v_Operations(v_Operations.count) := v_CurrentOperation, где v_CurrentOperation - это тоже массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:28 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaМассив v_Operations поначалу пустой, поэтому мы не можем ему что то присвоить, поэтому в Оракле мы делаем так, что увеличиваем массив на еденицу. Затем мы еже непустому массиву можем сделать это присвоение v_Operations(v_Operations.count) := v_CurrentOperation, где v_CurrentOperation - это тоже массив.Вот я тебе и говорю - построчно переводить код нельзя. Нужно привести, как минимум, кусок с объявлением и инициализацией массива + тот кусок, что ты уже указал. Разъяснить на словах, что это именно работа с массивом, так же на словах рассказать, что именно за работа с массивом делается. Ведь не все же "многостаночники" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:36 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
aloshaМассив v_Operations поначалу пустой, поэтому мы не можем ему что то присвоить, поэтому в Оракле мы делаем так, что увеличиваем массив на еденицу. Затем мы еже непустому массиву можем сделать это присвоение v_Operations(v_Operations.count) := v_CurrentOperation, где v_CurrentOperation - это тоже массив.насколько я помню, массиву постгрёвому размер не нужно предопределять. Т.ч. обозвав переменную массива можно пихать в нее скоко угодно членов. А вот с Null в постгре-массивах были сложности (попросту раньше не допускались) но кажецца с какой-то 8-ки должны быть допустимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:39 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
теперь вопрос, у автора топика, в качестве элемента коллекции используется объектный тип или простой? (/topic/254078&hl=array) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 10:43 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_sergтеперь вопрос, у автора топика, в качестве элемента коллекции используется объектный тип или простой? (/topic/254078&hl=array) привожу целиком функцию с Оракла: function getOperations( pStartID OPERATION.ID%TYPE, pLIMIT NUMBER, pNUMBER NUMBER ) return TYPES_PKG.REFCURSOR is v_Operations T_OPERATION_TABLE := T_OPERATION_TABLE(); v_ReturnedOperations T_OPERATION_TABLE := T_OPERATION_TABLE(); c_Operation TYPES_PKG.REFCURSOR; v_StartOpNumber NUMBER := 0; i NUMBER; cursor c_Operations is select ID, OPERATION_TYPE_CODE, OP_NUMBER, AMOUNT, OP_CREATE_DATE from OPERATION where OP_NUMBER > v_startOpNumber and (OP_NUMBER < pNUMBER or pNUMBER is NULL); r_Operations OPERATION%ROWTYPE; v_CurrentOperation T_OPERATION := T_OPERATION(NULL, NULL, NULL, NULL, NULL); begin if pStartID is not NULL then select OP_NUMBER into v_startOpNumber from OPERATION where ID = pStartID; end if; open c_Operations; fetch c_Operations into r_Operations; while (c_Operations%FOUND) loop v_CurrentOperation.ID := r_Operations.ID; v_CurrentOperation.OPERATION_TYPE_CODE := r_Operations.OPERATION_TYPE_CODE; v_CurrentOperation.OP_NUMBER := r_Operations.OP_NUMBER; v_CurrentOperation.AMOUNT := r_Operations.AMOUNT; v_CurrentOperation.OP_CREATE_DATE := r_Operations.OP_CREATE_DATE; v_Operations.extend(); v_Operations(v_Operations.count) := v_CurrentOperation; fetch c_Operations into r_Operations; end loop; close c_Operations; for i in 1..v_Operations.count loop if (i <= pLIMIT) then v_ReturnedOperations.extend; v_ReturnedOperations(v_ReturnedOperations.count) := v_Operations(i); end if; end loop; open c_Operation for select ID, OPERATION_TYPE_CODE, OP_NUMBER, OP_CREATE_DATE, AMOUNT AMOUNT_VALUE, NULL AMOUNT_CURRENCY from TABLE(cast(v_ReturnedOperations as T_OPERATION_TABLE)) order by OP_NUMBER; return c_Operation; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:13 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
имхо эту функцию надо переделать как setof (либо разделить на две, одна возвращает setof другая refcursor), никакие массивы вам не нужны. да и вобще вроде бы ее можно переписать в простой запрос для интереса, вам самому удобно читать код отформатированный таким образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:34 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_serg для интереса, вам самому удобно читать код отформатированный таким образом? как отформатировать нормально здесь его? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:36 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
alosha st_serg для интереса, вам самому удобно читать код отформатированный таким образом? как отформатировать нормально здесь его? когда вы постите в форум, вверху над полем ввода, есть кнопка SRC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:38 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_serg alosha st_serg для интереса, вам самому удобно читать код отформатированный таким образом? как отформатировать нормально здесь его? когда вы постите в форум, вверху над полем ввода, есть кнопка SRC Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:40 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_sergимхо эту функцию надо переделать как setof (либо разделить на две, одна возвращает setof другая refcursor), никакие массивы вам не нужны. да и вобще вроде бы ее можно переписать в простой запрос для интереса, вам самому удобно читать код отформатированный таким образом? так все же, как бы переписали эту функцию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:44 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
Код: 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. Этот вариант выглядит вроде более правильным Код: 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. гдето так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 11:55 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_serg Спасибо большое, буду разбираться сидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 12:13 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_serg Послушай, а не так ли будет правильнее, ведь мы сначала ограничиваем число записей, только потом делаем order by (смотри исходный код) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 13:02 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
и тогда, в общем случае, у тебя будет всегда непредсказуемый ограниченный набор записей. если ли в этом смысл зависит от логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 13:08 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
st_sergи тогда, в общем случае, у тебя будет всегда непредсказуемый ограниченный набор записей. если ли в этом смысл зависит от логики в исходной функции мы ведь так и делаем, сначала ограничиваем число записей, а ведт только потом делаем oreder by? Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 13:11 |
|
||
|
Как это переписать с Оракла на PostgreSQL?
|
|||
|---|---|---|---|
|
#18+
alosha st_sergи тогда, в общем случае, у тебя будет всегда непредсказуемый ограниченный набор записей. если ли в этом смысл зависит от логики в исходной функции мы ведь так и делаем, сначала ограничиваем число записей, а ведт только потом делаем oreder by? Или я не прав? прав, но я ж откуда знаю должна она так работать или нет? возможно это баг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34346430&tid=2005677]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 267ms |
| total: | 486ms |

| 0 / 0 |
