首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从数据库SQL>提示符执行PL/SQL包?

如何从数据库SQL>提示符执行PL/SQL包?
EN

Database Administration用户
提问于 2018-05-19 14:48:22
回答 2查看 40.1K关注 0票数 3

很抱歉问了这么一个基本问题,但是我还没有完成我的Oracle课程,而且我已经被要求做一些运行PL/SQL过程。我已经使用SQL安装了一个“包”,请参阅下面(C_FIX_STUCK_COS)。

但是现在我需要使用SQL>提示符(最后是通过Bash脚本)从SQLPlus提示符执行它。因此,在之前添加了一个“存储过程”并让它使用execute命令运行之后,我再次尝试使用我的包。

代码语言:javascript
运行
复制
execute C_FIX_STUCK_COS

但是,如果出现以下错误,则会失败:

代码语言:javascript
运行
复制
BEGIN C_FIX_STUCK_COS; END;

  *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'C_FIX_STUCK_COS' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

我想我没有使用正确的执行方法,但还没有在网上找到任何对我有帮助的东西。

被调用的过程'inside‘不包含任何参数:

代码语言:javascript
运行
复制
PROCEDURE FIX_STUCK_COS
-- Main procedure, called from external source
IS
  TYPE GEN_CURSOR       IS REF CURSOR;
  v_CO_CUR              GEN_CURSOR;

请有人快速解释一下(如果可能的话)包和“存储过程”有什么不同?但更重要的是,有人能告诉我如何执行‘包’吗?非常感谢。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2018-05-19 17:19:56

您不能执行PL/SQL包,因为它只是一个或多个例程(存储过程和函数)的容器。通常,您使用包来组织各种相关例程。

通过引用单个例程的名称来执行(调用)包中的单个例程。

代码语言:javascript
运行
复制
exec PKG_NAME.SPROC_NAME

或者在你的情况下

代码语言:javascript
运行
复制
exec C_FIX_STUCK_COS.FIX_STUCK_COS

因为包和SP都有非常相似的名称(这本身并不一定是一个好主意)。

票数 4
EN

Database Administration用户

发布于 2022-06-22 02:22:29

它是一个函数,所以您必须使用

代码语言:javascript
运行
复制
SELECT C_FIX_STUCK_COS.FIX_STUCK_COS() FROM DUAL
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/207279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档