oracle - PLS-00049: 创建过程时绑定变量错误
问题描述
您好我正在尝试创建一个程序,其代码如下:
CREATE PROCEDURE profit_calcs(profit OUT NUMBER,
em IN NUMBER,
eq IN NUMBER,
p IN NUMBER,
u IN NUMBER,
income IN NUMBER,
ex IN NUMBER) AS
BEGIN
SELECT SUM(amount) INTO em FROM a_em;
SELECT SUM(amount) INTO eq FROM a_eq;
SELECT SUM(amount) INTO p FROM a_p;
SELECT SUM(amount) INTO u FROM a_u;
SELECT SUM(amount) INTO income FROM sales;
ex := :em + :eq + :p + :u;
profit := :income - :ex;
END;
/
每当我尝试创建它时,我都会收到以下错误:
LINE/COL ERROR
--------- -------------------------------------------------------------
10/7 PLS-00049: bad bind variable 'EM'
10/13 PLS-00049: bad bind variable 'EQ'
10/18 PLS-00049: bad bind variable 'P'
10/22 PLS-00049: bad bind variable 'U'
11/11 PLS-00049: bad bind variable 'INCOME'
11/21 PLS-00049: bad bind variable 'EX'
如果有人帮助我解决此错误,那将非常有帮助。
解决方案
因为,您需要在关键字之后的声明部分定义这些变量AS
,BEGIN
例如
CREATE OR REPLACE PROCEDURE profit_calcs(profit OUT NUMBER,
ex OUT NUMBER) AS
em INT;
eq INT;
p INT;
u INT;
income INT;
BEGIN
或将它们转换OUT
为此存储过程的类型参数,例如
CREATE OR REPLACE PROCEDURE profit_calcs(profit OUT NUMBER,
em OUT NUMBER,
eq OUT NUMBER,
p OUT NUMBER,
u OUT NUMBER,
income OUT NUMBER,
ex OUT NUMBER) AS
BEGIN
在哪里
- 不要忘记删除这些变量前缀的冒号,例如
:em
,:eq
should beem
,eq
分别 REPLACE
CREATE PROCEDURE
考虑到即将进行的编译,不应省略命令选项
推荐阅读
- r - 根据配对数据/每两行计算和过滤数据?
- vb.net - 使用 oAuth2.0 连接到 XERO 时访问被拒绝问题
- image - Google 表格:如果单元格包含特定文本,则添加图像或绘图
- django - 使用 django 管理面板更新 django 模型的选择列表
- node.js - Node.js 如何在资源有限的系统上调度 Workers
- javascript - 在同一页面上将 Javascript 数据存储到 PHP
- azure-devops - 尝试将 GitLab 存储库导入 Azure 存储库,但出现以下错误
- javascript - 角块重复自身
- r - 在我的 Rshiny 输出底部收到 FALSE 消息
- python - 当 num_of_stages: 1 (RPN only) in tensorflow object-detection api 时,导出推理图会出错