|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Здравствуйте. Подскажите, есть ли возможность реализовать пожобный код: create or replace package PKG_CONSTANTS is TYPE R_RECORD IS RECORD ( L_STRING_1 VARCHAR2(1000) := null, L_STRING_2 VARCHAR2(1000) := null, L_STRING_3 VARCHAR2(1000) := null, L_STRING_4 VARCHAR2(1000) := null, L_STRING_5 VARCHAR2(1000) := null, L_STRING_6 VARCHAR2(1000) := null, L_STRING_7 VARCHAR2(1000) := null, L_STRING_8 VARCHAR2(1000) := null, L_STRING_9 VARCHAR2(1000) := null, L_STRING_10 VARCHAR2(1000) := null); TYPE CUR_RECORD IS REF CURSOR RETURN R_RECORD; end; create or replace function F_CREATE_RECORD ( P_STRING_1 in VARCHAR2 := null, P_STRING_2 in VARCHAR2 := null, P_STRING_3 in VARCHAR2 := null, P_STRING_4 in VARCHAR2 := null, P_STRING_5 in VARCHAR2 := null, P_STRING_6 in VARCHAR2 := null, P_STRING_7 in VARCHAR2 := null, P_STRING_8 in VARCHAR2 := null, P_STRING_9 in VARCHAR2 := null, P_STRING_10 in VARCHAR2 := null) return PKG_CONSTANTS.R_RECORD is LR_RECORD PKG_CONSTANTS.R_RECORD; begin LR_RECORD.L_STRING_1 := P_STRING_1; LR_RECORD.L_STRING_2 := P_STRING_2; LR_RECORD.L_STRING_3 := P_STRING_3; LR_RECORD.L_STRING_4 := P_STRING_4; LR_RECORD.L_STRING_5 := P_STRING_5; LR_RECORD.L_STRING_6 := P_STRING_6; LR_RECORD.L_STRING_7 := P_STRING_7; LR_RECORD.L_STRING_8 := P_STRING_8; LR_RECORD.L_STRING_9 := P_STRING_9; LR_RECORD.L_STRING_10 := P_STRING_10; return LR_RECORD; end F_CREATE_RECORD; declare L_CUR_RECORD PKG_CONSTANTS.CUR_RECORD; begin OPEN L_CUR_RECORD FOR select F_CREATE_RECORD( P_STRING_1 => D.COLUMN_VALUE1, P_STRING_2 => D.COLUMN_VALUE2, P_STRING_5 => D.COLUMN_VALUE3, P_STRING_10 => D.COLUMN_VALUE4) FROM SOME_TABLE D; for c in (select * from table(F_PIPELINE_FUNCTION(L_CUR_RECORD))) loop --some doing; end loop; end; Смысл: зделать универсальный курсор для разных запросов, записи которого обрабатываются в конвеерной функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 14:26 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Lemkoleg Смысл: зделать универсальный курсор для разных запросов, записи которого обрабатываются в конвеерной функции. что-то очень сложно так чем хуже Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 16:04 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Stax, Тем, ято строка должна соответствовать строке выборки. А, это нужно создавать отдельные строки, для каждой выборки. Соответственно, конвеерных функций , тоже. Т.к. у них будут разные типы входных данных ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 17:48 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Lemkoleg, я примерно так понимаю в F_PIPELINE_FUNCTION передается курсор, чтоб вернуть несколько другие записи (добавить, исключить, заменить) для етого достаточно обьявить табличний тип со структурой аля R_RECORD курсор будет универсальный в плане до 10-ти полей varchar2(1000),а дальше что ... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 18:14 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
LemkolegСмысл: зделать универсальный курсор для разных запросов, записи которого обрабатываются в конвеерной функции. И что Вы будете делать если очередной "разный запрос" будет иметь меньше полей, чем требуется функции для работы? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 18:24 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, "разный" в плане разные from,where .... ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 18:42 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Stax Lemkoleg, я примерно так понимаю в F_PIPELINE_FUNCTION передается курсор, чтоб вернуть несколько другие записи (добавить, исключить, заменить) для етого достаточно обьявить табличний тип со структурой аля R_RECORD курсор будет универсальный в плане до 10-ти полей varchar2(1000),а дальше что ... ..... stax А, дальше: конвеерная функция обрабатывает все не нулл поля одинаково. По-этому, нужно привести результат запроса к одному типу. Что и пытается зделать функция F_CREATE_RECORD. Но, т к. это тип PLSQL , то вызывается ошибка. Вот я и ищу решение (если оно существует) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 18:45 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Так и не понял гениальной задумки. Чисто технически - чтобы заставить работать Ваш код, можно создать тип уровня схемы. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
функцию create_record вполне заменит умолчательный конструктор Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 18:57 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
andrey_anonymous, а, курсор какого типа данных будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 19:05 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Вопрос не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 19:09 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Stax"разный" в плане разные from,where .... Воот... И тут мы приходим к тому, что в части select-list запросы все одинаковые. Остаётся всего один шаг: выкинуть из картины "PL/SQL тип" и передавать из курсора в функцию поля этого select-list одно за другим. Единственное что мешает этому простому и надёжному решению - топикстартеру лень набирать имена всех этих полей. Очевидно, тонкая кожа на пальцах стирается до кровавых мозолей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 19:22 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
andrey_anonymous Вопрос не понял Курсор имееь жестску привьязку к типу. Для того, чтоб была ОДНА конвеерная функция. Значик, курсор должен быть приведенным к этому типу. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 19:36 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Stax"разный" в плане разные from,where .... Воот... И тут мы приходим к тому, что в части select-list запросы все одинаковые. Остаётся всего один шаг: выкинуть из картины "PL/SQL тип" и передавать из курсора в функцию поля этого select-list одно за другим. Единственное что мешает этому простому и надёжному решению - топикстартеру лень набирать имена всех этих полей. Очевидно, тонкая кожа на пальцах стирается до кровавых мозолей. Нн только лень набирать имена полей. А еще, для каждого запроса, лень создавать свой тип записи и конвеерную функцию. Зачем мне столько шлака ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 19:42 |
|
Привести plsql тип к типу sql
|
|||
---|---|---|---|
#18+
LemkolegА еще, для каждого запроса, лень создавать свой тип записи и конвеерную функцию. Повторяю медленно: функция - одна. Запись - вообще не нужна. Передавай отдельные значения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 19:53 |
|
|
start [/forum/topic.php?fid=52&msg=40121772&tid=1879667]: |
0ms |
get settings: |
17ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
44ms |
get topic data: |
2ms |
get forum data: |
0ms |
get page messages: |
284ms |
get tp. blocked users: |
0ms |
others: | 293ms |
total: | 647ms |
0 / 0 |