如何使用oracle的DBMS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用oracle的DBMS相关的知识,希望对你有一定的参考价值。

oracle的DBMS的使用方法:
dbms_output包主要用于调试pl/sql程序,或者在sql*plus命令中显示信息(displaying message)和报表,譬如我们可以写一个简单的匿名pl/sql程序块,而该块出于某种目的使用dbms_output包来显示一些信息。
涉及到的知识点如下:
1、enable:在serveroutput on的情况下,用来使dbms_output生效(默认即打开)
2、disable:在serveroutput on的情况下,用来使dbms_output失效
3、put:将内容写到内存,等到put_line时一起输出
4、put_line:不用多说了,输出字符
5、new_line:作为一行的结束,可以理解为写入buffer时的换行符
6、get_line(value, index):获取缓冲区的单行信息
7、get_lines(array, index):以数组形式来获取缓冲区的多行信息
需要注意以下几点:
1、set serveroutput on:如果要在sqlplus中看到dbms_output的输出,则必须设置该参数值为on
2、每行能容纳的最大值是32767bytes
3、buffer的默认值是20000bytes,可设置的最小值为2000bytes,最大值为1000000bytes
参考技术A exec dbms_....

SQL> exec dbms_stats.gather_table_stats('CLARK','TT');

PL/SQL 过程已成功完成。

或者有些直接使用select

SQL> select dbms_random.value() randomval from dual
2 ;

RANDOMVAL
----------
.265415762

SQL> select dbms_random.string('a',10) randomstr from dual;

RANDOMSTR
--------------------------------------------------------------------------------
MklhdTxYgf本回答被提问者和网友采纳

如何使用 Oracle 11g / DBMS_XMLGEN 创建嵌套 XML 文件?

【中文标题】如何使用 Oracle 11g / DBMS_XMLGEN 创建嵌套 XML 文件?【英文标题】:How to create a nested XML file with Oracle 11g / DBMS_XMLGEN? 【发布时间】:2012-09-25 12:43:38 【问题描述】:

我使用的是 Oracle 11g ( 11.1.0.7.0 ),我必须创建一个查询的 XML 文件。我在 Forms 6 中使用这个文件,正是用户希望能够在按下表单中的按钮时创建 XML 文件,所以我有一个 PL/SQL 包,它创建一个带有 XML 数据的 CLOB 文件服务器和 Forms 6i 我逐行读取此文件行( UTL_FILE.FOPEN 读取它, UTL_FILE.GET_LINE 读取行)并使用 TEXT_IO.PUT_LINE 在客户端计算机上写入文件。 这很好用,但我对 XML 文件有疑问。 现在看起来像这样(值就是例子!):

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ShoeShop>
  <Article>
    <Artnumber>12345</Artnumber>
    <Artdesc>Black Shoes</Artdesc>
  </Article>
  <Article>
    <Artnumber>12346</Artnumber>
    <Artdesc>White Shoes</Artdesc>
  </Article>
</ShoeShop>

好的。 我想创建一个如下所示的 XML 文件,但我不知道怎么做!我是 SQL/PLSQL 的新手,我学习到 2 个月,在此之前我使用过 Progress 4GL。因此,在进行中,我将我想做的事情称为“嵌套”,但我不知道如何使用 SQL/PLSQL 来实现它。 XML 文件的示例我想如何获取它:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<ShoeShop>
  <Article="12345">
    <Artdesc>Black Shoes</Artdesc>
  </Article="12345">
  <Article="12346">
    <Artdesc>White Shoes</Artdesc>
  </Article="12346">
</ShoeShop>

用于创建 XML 文件的代码 sn-p 与第一个示例类似:

PROCEDURE XML_TO_CLOB( pi_Query      IN VARCHAR2,
                       pi_ParentNode IN VARCHAR2,
                       pi_ChildNode  IN VARCHAR2 ) IS
  qryCtx DBMS_XMLGEN.ctxHandle;
  cResult CLOB;
BEGIN
-- Create new Context for the Query
  qryCtx := DBMS_XMLGEN.newContext( pi_Query );

-- Set Parent and Child Node
  DBMS_XMLGEN.setRowSetTag( qryCtx, pi_ParentNode );
  DBMS_XMLGEN.SetRowTag( qryCtx, pi_ChildNode );

-- setNullHandling to show Tag also when the value is NULL
  DBMS_XMLGEN.setNullHandling( qryCtx, DBMS_XMLGEN.EMPTY_TAG );

-- getXML in CLOB
  cResult := DBMS_XMLGEN.getXML( qryCtx );

-- Put encoding to the "Header"
  cResult := REPLACE( cResult, '<?xml version="1.0"?>', '<?xml version="1.0" encoding="ISO-8859-1" ?>' );

-- Close Context
  DBMS_XMLGEN.closeContext( qryCtx );

-- Write the CLOB to a file on the server to work with the data in Forms 6i
  DBMS_XMSLPROCESSOR.CLOB2FILE( cResult, 'ExampleDir', 'Example.xml' );
END;

非常感谢,

莎拉

【问题讨论】:

两个发布的输出之间的唯一区别是Artnumber 从其自身的元素变为Article 的属性。还有其他变化吗? 【参考方案1】:

文档中有一些使用 DBMS_XMLGEN 生成嵌套文档的示例。 Check out example 17-27。

Oracle 解决方案涉及使用用户定义的类型来指定文档的形状,包括将作为属性而不是元素包含在内的列。这可能比您预期的要多。

【讨论】:

以上是关于如何使用oracle的DBMS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Oracle 的 dbms_standard 包

如何在 Oracle 中使用 DBMS_SCHEDULER 删除文件

如何使用 Oracle 11g / DBMS_XMLGEN 创建嵌套 XML 文件?

如何使用 Oracle dbms_ldap 包获取 LDAP 组名称?

如何停止 Oracle dbms_job

如何在 datagrip IDE 中集成 oracle DBMS