Oracle 显示编译错误的PlSQL
PL/SQL显示编译错误。函数工作正常且已成功编译,但若运行pl/sql查询,则显示编译Oracle 显示编译错误的PlSQL,oracle,plsql,syntax-error,Oracle,Plsql,Syntax Error,PL/SQL显示编译错误。函数工作正常且已成功编译,但若运行pl/sql查询,则显示编译 CREATE OR REPLACE FUNCTION f( num IN NUMBER, num2 IN NUMBER, ans OUT NUMBER ) RETURN number IS BEGIN ans := num + num2; RETURN ans; END; CREATE table add1(val1 number(2),val2 number(
CREATE OR REPLACE FUNCTION f(
num IN NUMBER,
num2 IN NUMBER,
ans OUT NUMBER
) RETURN number IS
BEGIN
ans := num + num2;
RETURN ans;
END;
CREATE table add1(val1 number(2),val2 number(1),ans number(3));
SET SERVEROUTPUT ON ;
DECLARE
a1 add1.val1%TYPE;
b1 add1.val2%TYPE;
sum add1.ans%TYPE;
BEGIN
WHILE a1!=-99
LOOP
a1 := &a1;
b1 := &b1;
sum := f(a1, b1, sum);
INSERT INTO add1 VALUES(a1, b1, c1);
END LOOP;
END;
不能使用IN和OUT IN函数。只有在程序上。正确的做法是:
create or replace function f(
num number,
num2 number
) return number is
ans number;
begin
ans := num + num2;
return ans;
end;
哦,孩子!代码中的错误太多。也许你应该描述一下你想用这些东西做什么。你不能在函数中使用IN和OUT。只有在程序上。正确的做法是:
create or replace function f(
num number,
num2 number
) return number is
ans number;
begin
ans := num + num2;
return ans;
end;
哦,孩子!代码中的错误太多。也许你应该描述一下你想用这些东西做什么。我已经用sum替换了insert查询中的c1,但仍然是编译错误,,,
PL/SQL显示编译错误。
。错误(代码、消息)在哪里?事实上,有很多错误:1)您试图使用c1
变量,但尚未声明它;2) sum
是PL/SQL保留字。因此,您可以更改(推荐)变量的名称,或者将sum
括在双引号中(千万不要这样做)。旁注:尽量不要编写通过组合return
语句和一个或多个out
参数向调用程序返回多个值的函数。谢谢@NicholasKrasnov,我明白了你的意思。现在可以工作了,,,:)我已经用sum替换了insert查询中的c1,但仍然是编译错误,,,PL/SQL显示编译错误
。错误(代码、消息)在哪里?事实上,有很多错误:1)您试图使用c1
变量,但尚未声明它;2) sum
是PL/SQL保留字。因此,您可以更改(推荐)变量的名称,或者将sum
括在双引号中(千万不要这样做)。旁注:尽量不要编写通过组合return
语句和一个或多个out
参数向调用程序返回多个值的函数。谢谢@NicholasKrasnov,我明白了你的意思。现在它正在工作,,,:)你不能在函数中使用IN和out
不是真的。这是允许的。唯一的限制是,您不能在SQL中使用该函数,但在PL/SQL中,请继续使用它,尽管这是一个非常非常糟糕的做法。我的糟糕,我不知道。尽管我仍然看不到在PL/SQL中使用带OUT参数的函数而不是带OUT参数的过程的原因。您不能使用in和OUT in函数
不正确。这是允许的。唯一的限制是,您不能在SQL中使用该函数,但在PL/SQL中,请继续使用它,尽管这是一个非常非常糟糕的做法。我的糟糕,我不知道。尽管我仍然不明白在PL/SQL中使用带OUT参数的函数而不是带OUT参数的过程的原因。