Динамические переменные связывания не распознаются во встроенном представлении
У меня есть следующий код, написанный на SQR:
select
business_unit &g8_iee_business_unit
ledger g8_iee_ledger
sum_posted_total_amt &yb_g8_iee_amount_selected
ft_yb_iee_RPT_NY &g8_iee_rpt_row_ny
currency_cd &g8_iee_currency_cd
From (
with a as (
Select DISTINCT account
From ps_gl_account_tbl
Where account [$col_g8_account]
)
SELECT /*+LEADING(a g8row g8func g8ybdata) PX_JOIN_FILTER(g8ybdata) swap_join_inputs(g8row) use_hash(g8row) swap_join_inputs(g8func) use_hash(g8func) swap_join_inputs(angel) use_hash(angel)*/
g8row.ft_yb_iee_rpt_ny, g8ybdata.business_unit, g8ybdata.ledger,
sum(g8ybdata.posted_total_amt) sum_posted_total_amt,
g8ybdata.currency_cd
from ps_ft_yba_rul8_row g8row
, ps_ledger g8ybdata
, a
where ([$criteria2])
and g8ybdata.ledger in ([$verledger])
and g8ybdata.account = a.account
and (g8ybdata.currency_cd = 'USD' or g8ybdata.currency_cd = ' ' )
and g8ybdata.fiscal_year = #year
and [$account_period_select]
and g8ybdata.product = g8row.product
and ( g8row.ft_yb_iee_rpt_ny > '18' AND g8row.ft_yb_iee_rpt_ny < '22' )
group by g8row.ft_yb_iee_rpt_ny, g8ybdata.business_unit, g8ybdata.ledger, g8ybdata.currency_cd
)
order by FT_YB_IEE_RPT_NY, business_unit, ledger, currency_cd;
Кажется, что [$col_g8_account]
во встроенном представлении не может быть прочитано, потому что это выдает мне ошибку 'invalid relational operator'
:
(SQR 5528) ORACLE OCIStmtExecute ошибка 920 в курсоре 6: ORA-00920: неправильный реляционный оператор SQL: SELECT business_unit, книга, sum_posted_total_amt, FT_YB_IEE_RPT_NY, ft_yb_rpt_col_char, CHARTFIELD2, currency_cd С (с, как (выберите DISTINCT учетную запись из ps_gl_account_tbl Где группа счетов по g8row.FT_YB_IEE_RPT_NY,g8func.ft_yb_rpt_col_char, g8func.CHARTFIELD2, g8ybdata.business_unit, g8ybdata.ledger, g8ybdata.currency_cd)
Ошибка в строке 682: (SQR 3716) Ошибка в операторе SQL.
(SQR 5528) ORACLE OCIStmtExecute ошибка 920 в курсоре 7: ORA-00920: недопустимый реляционный оператор SQL: SELECT business_unit, бухгалтерская книга, sum_posted_total_amt, ft_yb_iee_RPT_NY, currency_cd From (с учетной записью as (выберите DISTINCT__обозначить_счет_бюджет_сделки_обозначить_счет_бюджетным капиталом_сайта) g8ybdata.business_unit, g8ybdata.ledger, g8ybdata.currency_cd)
Ошибка в строке 803: (SQR 3716) Ошибка в операторе SQL.
Ошибки были найдены в файле программы.
SQR для PeopleSoft: программа прерывается.
1 ответ
Проблема заключена в кавычках в динамической переменной.
Я полагаю, что вы пытаетесь что-то вроде этого (я не знаю ваших условных критериев, поэтому я создал ShowSingle):
if #ShowSingle = 1
Let $col_g8_account = '='100000''
else
Let $col_g8_account = ' like '1000%''
End-If
Проблема в том, что когда вы вставляете кавычки, вы должны удваивать их. Это трудно понять, но что вам нужно сделать, это примерно так:
if #ShowSingle = 1
Let $col_g8_account = '=''100000'''
else
Let $col_g8_account = 'like ''1000%'''
End-If
Я проверил это, и он работает (и тоже не работает)