oracle xsql,oracle xsql 详解(一)

xsql:query标签是用来从数据库检索信息的。在前面的例子中,我们都简单的把一个sql放在该标签中,这个标签中只能放select语句,如果你放一个insert语句在该标签中,那么xsql page processor将拒绝它。

在上面的例子中,查询语句查出的结果被转变成xml标签替代了xsql:query标签,表中的列名在每一行中替换成了xml元素的标签名字。如果你不喜欢列名,你可以用”select id as employee_id来替代。

特别是当你的输出列名中有特殊字符的时候,如:

select id, to_char(hiredate, ‘YYYY-MON’) from xsql_employee

如果你这么写,你将得到一个错误,第二列包含了”(“,这是xml标签名不能允许的,所以你需要给他一个别名,如:

select id, to_char(hiredate, ‘YYYY-MON’) as hiredate from xsql_employee

你同样可以设置程序自己生成的rowset和row标签,使用xsql:query的row-element和rowset-element属性来设置。如:

xml version="1.0"

?>

<

xsql:query

connection

="xsql_test"

xmlns:xsql

="urn:oracle-xsql"

row-element

="EMPLOYEES"

rowset-element

="EMPLOYEE_LIST"

>

select * from xsql_employee

xsql:query

>

运行结果如下:

756d9ae05dabc131db13a46d981c276e.png

如果你需要在同一个page里使用多个xsql:query,则他们需要包含在一个跟节点下。因为一个xml文档必须要有一个根节点。

如:

xml version="1.0"

?>

xml-stylesheet type=text/xsl" href="helloworld.xsl"

?>

<

page

connection

="xsql_test"

xmlns:xsql

="urn:oracle-xsql"

>

<

xsql:query

>

select * from xsql_employee

xsql:query

>

<

xsql:query

>

select * from xsql_employee

xsql:query

>

page

>

fb3b01d97d86627f71880cf1abd81341.png

3.xsql parameters

xsql分为4种参数:

a.request parameters

b.page-private parameters

c.stylesheet parameters

d.session parameters

e.cookies

后面将说明各种类型的参数的用处。但是在此之前,我们的第一步是知道怎样去关联参数和参数值怎么在xml中呈现的。

1)关联参数

xsql page processor通过寻找{@paramName}来解析xsql页的参数,当他找到这种形式的参数时,它将用参数的值来替换{@paramName}。

下面来看一个例子:

xml version="1.0"

?>

<

page

xmlns:xsql

="urn:oracle-xsql"

connection

="{@conn}"

>

<

xsql:query

>

select {@fields} from {@tables}

xsql:query

>

page

>

如果你键入url不带参数,你将会的到报错信息。

键入以下url,将返回表中所有行

http://localhost:8088/xsql_test/xsql/very-unsecure.xsql?conn=xsql_test&fields=*&tables=xsql_employee

f38fd5bf9df29663ce2863adb4e3a464.png

参数必须放在xsql:动作标签内,不然xsql解析器不会去替换参数的。

如果你把刚才xsql文档改为如下:

xml version="1.0"

?>

<

page

xmlns:xsql

="urn:oracle-xsql"

connection

="{@conn}"

>

<

xsql:query

>

select {@fields} from {@tables}

xsql:query

>

<

conn

>

{@conn}

conn

>

<

fields

>

{@fields}

fields

>

<

tables

>

{@tables}

tables

>

page

>

8b7d37235f3898658a1431ffe4fe4ade.png

2)显示参数

在前面的例子中,我们知道了如何关联参数,但是如果你想要参数包括在输出中,需要使用或者

例:

xml version="1.0"

?>

<

page

xmlns:xsql

="urn:oracle-xsql"

connection

="{@conn}"

>

<

xsql:include-param

name

="conn"

/>

<

xsql:include-param

name

="fields"

/>

<

xsql:include-param

name

="tables"

/>

page

>

这个操作将输出所有的参数到xml中。

03e0ddadc426983dda9cad815d811cf9.png

在这种情况下,你必须为每一个显示的参数写代码,如果你想显示所有的参数,你可以用标签

如:

xml version="1.0"

?>

<

page

xmlns:xsql

="urn:oracle-xsql"

connection

="{@conn}"

>

<

xsql:include-request-params

/>

page

>

3)参数类型

a)request parameters

在上面的例子中,我们用到的就是请求参数。这很好理解,请求参数是是http请求的一部分。刚才的例子中我们用到的是http的get方法获得的request,post方法也可以获得参数。例:

DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

>

<

html

>

<

head

>

<

meta

http-equiv

="Content-Type"

content

="text/html; charset=UTF-8"

>

<

title

>

post param form

title

>

head

>

<

body

>

<

form

action

="xsql/very-unsecure.xsql"

method

="post"

>

<

table

border

="0"

>

<

tr

>

<

td

>

connection:

td

>

<

td

><

input

type

="text"

name

="conn"

/>

td

>

tr

>

<

tr

>

<

td

>

fields:

td

>

<

td

><

input

type

="text"

name

="fields"

/>

td

>

tr

>

<

tr

>

<

td

>

tables:

td

>

<

td

><

input

type

="text"

name

="tables"

/>

td

>

tr

>

<

tr

>

<

td

colspan

="2"

align

="center"

>

<

input

name

="submitButton"

type

="submit"

value

="select"

/>

td

>

tr

>

table

>

form

>

body

>

html

>

这个页面将获得同样的结果。

b)Page-Private Parameters

page-private parameters是当前页面的私有的参数,不像session parameters和cookie parameters能够跨多个页面。

你可以通过标签来明确的在你的页面中设置私有参数。

设置方法有两种,第一种直接指定参数值,第二种通过sql返回一个参数值。

如:

xml version="1.0"

?>

<

page

xmlns:xsql

="urn:oracle-xsql"

connection

="xsql_test"

>

<

xsql:set-page-param

name

="lastname"

value

="chen"

/>

<

xsql:set-page-param

name

="job"

>

select job from xsql_employee where lastname='{@lastname}'

xsql:set-page-param

>

<

xsql:include-param

name

="lastname"

/>

<

xsql:include-param

name

="job"

/>

<

xsql:query

>

select * from xsql_employee where job='{@job}'

xsql:query

>

page

>

fe3dfc73e0ba43e826334b87c68942ab.png

c)session parameters

d)cookie

4)默认参数

在上面的例子中,我们的xsql依赖于参数的设定或者是request参数,有时,我们希望给他一个默认值。

如:

xml version="1.0"

?>

<

page

fields

="*"

conn

="xsql_test"

tables

="xsql_employee"

xmlns:xsql

="urn:oracle-xsql"

connection

="{@conn}"

>

<

xsql:include-request-params

/>

<

xsql:query

>

select {@fields} from {@tables}

xsql:query

>

page

>

输入http://localhost:8088/xsql_test/xsql/very-unsecure.xsql

11e7f593f08ec09ae6a33016f94540c7.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值