sql - Oracle 报错“包名和模式名必须与编辑对象匹配”
问题描述
我正在尝试构建一个包,我使用以下代码作为规范
CREATE OR REPLACE PACKAGE MBA.OSA
AS
FUNCTION FUNC_OSA
(inp_SKU in number, func_store_id in number, func_start_date in DATE, func_end_date in DATE)
RETURN NUMBER;
END OSA;
并跟随身体
CREATE OR REPLACE PACKAGE BODY MBA.OSA as
function FUNC_OSA (inp_SKU in number, func_store_id in number, func_start_date in DATE, func_end_date in DATE) RETURN NUMBER
IS
p_OSA NUMBER;
BEGIN
with period_len as (
select (func_end_date - func_start_date) len_per from dual
),
OSA_ as (
select dm.SKU,
dm.store_id,
ROUND(count(distinct dm.TRAN_DATE) / (select len_per from period_len) * 100,0) OSA
--into OSA
from datamarts.SALES_DETAIL_DM dm
where SKU = inp_SKU
AND TRAN_DATE between func_start_date and func_end_date
AND dm.store_id = func_store_id
group by dm.SKU, dm.store_id
)
select OSA into p_OSA from OSA_;
RETURN p_OSA;
END FUNC_OSA;
END OSA;
但我不断收到同样的错误:
name of the package and name of schema must match with editing object
模式的名称是 MBA,它也在包名和包体中。我想,编辑对象是我的函数 func_osa,但如果我添加 MBA.FUNC_OSA 之类的方案名称,我会得到一堆或错误。
解决方案
尝试 :
connect / as sysdba
alter session set current_schema=MBA;
**CREATE OR REPLACE PACKAGE OSA**
..
END OSA;
/
**CREATE OR REPLACE PACKAGE BODY OSA**
..
END OSA;
/
推荐阅读
- amazon-cloudformation - AWS CloudFormation Fn::ImportValue 不喜欢!加入?
- java - 参数是传递给 lambda 表达式内的括号还是传递给接口内的方法?
- docker - 在 Dockerfile 构建过程中实例化 Julia 环境的问题
- ms-access - 如何为与查询中的值关联的项目数创建运行总和?
- python - python中有没有办法启动Powershell“会话”/在不同时间将多个命令传递给单个powershell会话?
- vba - VBA中的递归函数结构
- java - 具有重复查询参数的 RestAssured
- snakemake - 在snakemake中运行带有通配符的外部脚本
- python-3.x - 如何使用暗网和实感(点云、深度框架等)计算对象的长度、宽度(二维)
- node.js - 邮政
net::ERR_CONNECTION_REFUSED 尝试登录