扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:builder.com.cn 2007年6月5日
关键字:
另外一件你需要考虑的事情是,它旨在用于程序间或由开发者访问。你不希望在网络或其它地方传播。那无疑会造成一个安全问题。如果你准备使用这段脚本,考虑将其纳入调用者的权限包中。我会不时考虑它的安全情况。这个问题需要小心对待。
如果你感到好奇,PL/XML代码包括:
所有这些都包含在大约500行代码中(包括空白和注释)。
这样编程确实很有趣。总共用了大约4个小时的时间。
以下是一个更加全面的例子,它说明了许多功能。
这个XML:
<ROOT>
<CMD type="for">
<FOR from="1" to="3">
<CMD type="variable">
<VAR name="$var1$" type="literal" data_type="char">MyValue</VAR>
</CMD>
<CMD type="variable">
<VAR name="$var2$" type="literal" data_type="date" format="DD-MON-YYYY">01-JAN-2005</VAR>
</CMD>
<CMD type="variable">
<VAR name="$var3$" type="literal" data_type="number">1999</VAR>
</CMD>
<CMD type="variable">
<VAR name="$var4$" type="function" data_type="char">
<FUNCTION name="test_func">
<PARAMETER name="parm1">$var1$</PARAMETER>
<PARAMETER name="parm2">def</PARAMETER>
</FUNCTION>
</VAR>
</CMD>
<CMD type="proc">
<PROC name="test_proc">
<PARAMETER name="parm1">$var1$</PARAMETER>
<PARAMETER name="parm2">def</PARAMETER>
</PROC>
</CMD>
</FOR>
</CMD>
<CMD type="for">
<FOR from="1" to="5">
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a">Hello World!</PARAMETER>
</PROC>
</CMD>
</FOR>
</CMD>
<CMD type="case">
<WHEN condition="1=2">
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a">Condition: 1=2</PARAMETER>
</PROC>
</CMD>
</WHEN>
<WHEN condition="1=1">
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a">Condition: 1=1</PARAMETER>
</PROC>
</CMD>
</WHEN>
<WHEN condition="1=3">
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a">Condition: 1=3</PARAMETER>
</PROC>
</CMD>
</WHEN>
</CMD>
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a">$var4$</PARAMETER>
</PROC>
</CMD>
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a" type="context">TO_CHAR(sysdate)</PARAMETER>
</PROC>
</CMD>
<CMD type="variable">
<VAR name="$var5$" type="function" data_type="date" format="dd-mon-yyyy">
<FUNCTION name="test_date_func" />
</VAR>
</CMD>
<CMD type="proc">
<PROC name="dbms_output.put_line">
<PARAMETER name="a" type="literal">$var5$</PARAMETER>
</PROC>
</CMD>
</ROOT>
给定这些测试过程:
CREATE OR REPLACE PROCEDURE test_proc( parm1 IN VARCHAR2, parm2 IN VARCHAR2 )
IS
BEGIN
DBMS_OUTPUT.PUT_LINE( 'Out: ' || parm1 || parm2 );
END;
CREATE OR REPLACE FUNCTION test_func( parm1 IN VARCHAR2, parm2 IN VARCHAR2 )
RETURN VARCHAR2
IS
BEGIN
RETURN 'Data: ' || parm1 || '|' || parm2;
END;
CREATE OR REPLACE FUNCTION test_date_func
RETURN DATE
IS
BEGIN
RETURN sysdate;
END;
生成以下结果:
Out: MyValuedef
Out: MyValuedef
Out: MyValuedef
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Condition: 1=1
Data: MyValue|def
25-AUG-06
25-AUG-06
我正在发布这段脚本的开源代码,以便你可以在适当的地方使用它。你可以在Freshmeat.net订阅,并在我更新代码时得到通知;或访问http://code.google.com/p/pl-xml/获取PL/XML的源代码。
责任编辑:德东
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者