【发布时间】:2016-01-30 05:31:58
【问题描述】:
下面列出的代码创建了一个只有一个规范的包。我不断收到错误消息。
错误:
Error: PL/SQL: Compilation unit analysis terminated
Error(1,14): PLS-00201: identifier 'TAXRATE_PKG' must be declared
Error(1,14): PLS-00304: cannot compile body of 'TAXRATE_PKG' without its specification
代码:
CREATE OR REPLACE PACKAGE BODY TAXRATE_PKG IS
PROCEDURE state_tax_pf(
p_state IN VARCHAR2,
pv_tax_nc OUT NUMBER,
pv_tax_tx OUT NUMBER,
pv_tax_tn OUT NUMBER)
IS
lv_state NUMBER;
BEGIN
IF p_state = 'NC' THEN
pv_tax_nc := 0.35;
ELSIF p_state = 'TX' THEN
Pv_tax_tx := 0.05;
ELSIF p_state = 'TN' THEN
pv_tax_tn := 0.02;
END IF;
RETURN lv_state;
END;
END;
【问题讨论】:
-
你需要先创建包。
CREATE OR REPLACE PACKAGE TAXRATE_PKG IS PROCEDURE state_tax_pf(p_state IN VARCHAR2, pv_tax_nc OUT NUMBER, pv_tax_tx OUT NUMBER, pv_tax_tn OUT NUMBER); END TAXRATE_PKG;或CREATE OR REPLACE PACKAGE TAXRATE_PKG IS FUNCTION get_state_tax(p_state IN VARCHAR2) RETURN NUMBER); END TAXRATE_PKG;视情况而定。 (未经测试,手边没有 Oracle DB,可能还有其他语法错误。 -
@ShannonSeverance 我要创建一个仅包含规范的包。
-
从您的 create 语句中删除单词
body,create package BODY创建正文,而不是规范。 -
请不要以使现有答案无效的方式编辑问题。你完全改变了你问的问题,并且无论如何又问了新的问题,所以我已经回滚到以前的版本。
标签: sql oracle plsql compiler-errors package