【问题标题】:Oracle create procedure query throwing errorOracle 创建过程查询抛出错误
【发布时间】:2012-02-02 18:50:44
【问题描述】:

我有一个创建过程查询,我试图在 Oracle 数据库中执行它。下面是查询:

CREATE OR REPLACE PROCEDURE TEST_PROC IS
TYPE TESTTABLE IS TABLE OF a.TEST102%ROWTYPE;

查询的语法似乎没问题,但是当我执行它时,它会抛出 sql 异常。

在预期以下情况之一时遇到符号“文件结尾”: . ( @ % ; 非空范围改变字符

试图从过去两天尝试所有可能的方法来找出问题,但我不知道问题出在哪里。谁能建议查询有什么问题????如果有人可以在这里帮助我,那就太好了。

【问题讨论】:

  • 这是整个过程的代码吗? begin .. end; / 在哪里?
  • 是的,它是整个程序的代码是不是错了????
  • 如果我们必须在上面的查询中使用 begin 和 end 我们如何添加它......对不起,我是 oracle 的新手,所以问......
  • 如果没有包含一些实际工作的开始/结束,该过程将不会做任何事情。你想达到什么目的?
  • 我只是试图创建一个特定数据类型的过程,所以上面的查询也是如此......你能告诉我一个具有某种特定类型的创建过程查询的例子吗?

标签: sql oracle plsql


【解决方案1】:

程序必须有 BEGIN..END 块。 这是一个不做任何事情的过程。

CREATE OR REPLACE PROCEDURE TEST_PROC 
IS
  TYPE TESTTABLE IS TABLE OF dual%ROWTYPE;
BEGIN
  NULL;
END;

【讨论】:

  • PLS-00103:在预期以下情况之一时遇到符号“文件结尾”:(;不为空范围更改索引字符,
  • 编辑为使用 dual%rowtype。适用于 Oracle 9.2
  • 也适用于 11.2。原始得到 PLS-00201 'identifier must be declared',而不是 PLS-00103,所以我认为我们必须遗漏一些关于 OP 如何执行命令的内容?
【解决方案2】:

以下将起作用:

CREATE TABLE TEST102(id number);

CREATE OR REPLACE PROCEDURE TEST_PROC IS
TYPE TESTTABLE IS TABLE OF TEST102%ROWTYPE;
BEGIN
    NULL; -- insert procedure body here
END;

【讨论】:

  • 这仍然会得到 PLS-00103,因为没有开始/结束。
  • @user587092:确保表 TEST102 存在且有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2020-07-26
  • 2018-03-11
相关资源
最近更新 更多