Все,с использованием подсказки в размещенной переменной?
Я хочу использовать подсказку в размещенной переменной; на самом деле нам нужно использовать динамическое значение подсказки (подсказка должна оцениваться во время выполнения). мы можем написать SQL заявление от этого:
SELECT /*+ ORDERED INDEX (b, jl_br_balances_n1) USE_NL (j b)
USE_NL (glcc glf) USE_MERGE (gp gsb) */
b.application_id ,
b.set_of_books_id ,
b.personnel_id,
p.vendor_id Personnel,
p.segment1 PersonnelNumber,
p.vendor_name Name
FROM jl_br_journals j,
jl_br_balances b,
gl_code_combinations glcc,
fnd_flex_values_vl glf,
gl_periods gp,
gl_sets_of_books gsb,
po_vendors p
WHERE
к:
SELECT /*+ :hosted_hintp */
b.application_id ,
b.set_of_books_id ,
b.personnel_id,
p.vendor_id Personnel,
p.segment1 PersonnelNumber,
p.vendor_name Name
FROM jl_br_journals j,
jl_br_balances b,
gl_code_combinations glcc,
fnd_flex_values_vl glf,
gl_periods gp,
gl_sets_of_books gsb,
po_vendors p
WHERE
hosted_hintp содержат значение подсказки нам нужно во время выполнения.
спасибо
Я не уверен, что я понимаю контекст. Вы пытаетесь связать текст подсказки? Это не сработает. Вы можете потенциально использовать динамический SQL для сборки инструкции SQL перед ее выполнением - специфика этого будет зависеть от языка, на котором написан клиент, с которым вы работаете SQL. Если вы используете SQL * Plus, вы, вероятно, могли бы использовать переменную замещения ... В основном, я бы поставил под сомнение это требование - используя такие подсказки, как это, как правило, плохая идея, динамические подсказки хуже. Oracle имеет множество других возможностей для управления планами. –
Конечно, вы можете, кодируя динамический SQL. В качестве примера я напишу вам быстрый код. –
@JustinCave Спасибо за ответ, наш DAL поддерживает операторы dynamique, с pro * C мы можем использовать exec sql подготовить dyn_stmt для выбора ...., Проблема в том, что (для dynamique) это будет риск SQL-инъекции. что вы думаете? – Aymanadou