有时,在 PL SQL 中,您希望向包、函数或过程添加参数,以便为将来的功能做好准备。例如:
create or replace function doGetMyAccountMoney( Type_Of_Currency IN char := 'EUR') return number
is
Result number(12,2);
begin
Result := 10000;
IF char <> 'EUR' THEN
-- ERROR NOT IMPLEMENTED YET
END IF;
return(Result);
end doGetMyAccountMoney;also
它可能会导致很多警告,例如
Compilation errors for FUNCTION APPUEMP_PRAC.DOGETMYACCOUNTMONEY
Error: Hint: Parameter 'Currency' is declared but never used in 'doGetMyAccountMoney'
Line: 1
避免这些警告的最佳方法是什么?
我相信这是由参数 PLSQL_WARNINGS 控制的,10gR2 的记录如下:http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams166.htm#REFRN10249
如果您无法更改警告级别,您可以将参数值绑定到虚拟值并记录它们以供将来使用。
嗯,你的例子有几个错误。最重要的是,您需要在 IF 语句中将“char”更改为“Currency”;据我所知,这也可以避免警告。
禁用非严重 PL/SQL 警告:
ALTER SESSION SET PLSQL_WARNINGS='ENABLE:SEVERE';
那么,您确定您在该声明中的姓名和权利的顺序正确吗?
它抱怨一个名为“Currency”的参数,但你实际上并没有使用它,是吗?
另一方面,你正在使用一种叫做 char 的东西,那是什么?
或者也许我对 PL/SQL 的了解还很遥远,如果是这样,请发表评论,我会删除它。
警告很有用,所以我不喜欢完全关闭它们。为了根据具体情况安抚编译器有关未使用参数提示的信息,我做了类似的事情,使用递归“调用”自身来使用参数:
FUNCTION test(p1 NUMBER, p2 VARCHAR2) RETURN VARCHAR2 IS
BEGIN
IF FALSE THEN RETURN test(p1, p2); END IF; -- this will shut up the warning
RETURN p2;
END test;