我创建了一个词法参数x_sql,其数据类型为字符,初始值在用户参数部分为双。
sql语句是: - select * from(& x_sql)
现在,x_sql的值是从包含的函数中获取的,该函数在Before Report触发器中调用。
x_sql包含查询:
SELECT process
, part_name
, ok_qty
, "Casting damage"
FROM INHOUSE_REJ_TAB
PIVOT (
SUM(reason_wise_rej_qty) FOR rejected_reason IN (
'Casting damage' as "Casting damage"
)
) ORDER BY part_name
其中process,part_name和ok_qty是固定列,但Casting damage是动态的。可以有多个拒绝原因。
现在我需要从这个动态选择查询生成一个xml输出。
查询的输出是
PROCESS PART_NAME OK_QTY Casting Damage
LPC PEGEOUT 1.8 CYLINDER HEAD CASTING H29 12420 10
问题是我没有得到所需的输出。
运行报告后得到的输出是: -
<?xml version="1.0" encoding="UTF-8" ?>
- <!-- Generated by Oracle Reports version 10.1.2.3.0
-->
- <INHOUSE_REJ>
- <LIST_G_DUMMY>
- <G_DUMMY>
<DUMMY>X</DUMMY>
</G_DUMMY>
</LIST_G_DUMMY>
</INHOUSE_REJ>
所需的输出应为
<INHOUSE_REJ>
<P_ORGANIZATION_ID>88</P_ORGANIZATION_ID>
<P_FROM_DATE>2015-01-01</P_FROM_DATE>
<P_TO_DATE>2015-02-11</P_TO_DATE>
- <LIST_G_DATA>
- <G_DATA>
<PROCESS>LPC</PROCESS>
<PART_NAME>PEGEOUT 1.8 CYLINDER HEAD CASTING H29</PART_NAME>
<OK_QTY>12420</OK_QTY>
<CASTING DAMAGE>10< /CASTING DAMAGE>
</G_DATA>
</LIST_G_DATA>
</INHOUSE_REJ
P_ORGANIZATION_ID,P_FROM_DATE,P_TO_DATE是用户参数
我只需要知道一个词法参数是否包含一个完整的select语句,它在名称和要显示的列数方面都是动态的,然后是如何在Oracle Reports 10g中处理它。
请帮助我并指导我。
答案 0 :(得分:0)
词法引用是嵌入SELECT语句的文本的占位符。您可以使用词法引用来替换SELECT,FROM,WHERE,GROUP BY,ORDER BY,HAVING,CONNECT BY和START WITH之后出现的子句。您不能在PL / SQL中进行词法引用。在查询中引用词法参数之前,必须预先定义参数。
语法: SELECT Col1,Col2 FROM&amp; ATABLE
Lexical parameters are used to substitute multiple values at run time and identified by a preceding ‘&’. Lexical can consist of as little a one line where clause to an entire select statement
使用词法参数创建Oracle报告 http://www.oraappdata.com/2017/02/create-oracle-report-with-lexical-parameter.html