PLS-00049: 创建过程时绑定变量错误

问题描述

嗨,我正在尝试创建一个程序,其代码如下:

undefined

每当我尝试创建它时,我都会收到以下错误

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;
/

如果有人帮我解决这个错误会很有帮助。

解决方法

因为,您需要在关键字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 应分别为 em,eq
  • 不应省略 REPLACE 命令的
  • CREATE PROCEDURE 选项 考虑即将到来的编辑