在null plsql包中将null插入数字数据类型

时间:2016-01-14 13:21:28

标签: sql oracle plsql

我有一个类似

的程序
       create or replace package pack_body
         as
        procedure export(P_LOCATION_ID number
                         ,retcode OUT   NOCOPY   NUMBER)
         as
         ----body
        end;

我在另一个包中调用此包

pack_body.export(p_location_id => null);

在这一行它会出错:

Error(28412,5): PLS-00306: wrong number or types of arguments in call to 'EXPORT'

我不能将null传递给数字数据类型变量吗?

2 个答案:

答案 0 :(得分:4)

您需要将两个参数传递给过程:

DECLARE
  rc NUMBER;
BEGIN
  pack_body.export(
    p_location_id => null,
    retcode       => rc
  );
END;
/

答案 1 :(得分:0)

由于此retcodeOUT参数,因此表示正在从该特定过程pack_body.export返回一个值,并且正在变量retcode中分配

因此,在调用此过程pack_body.export时,您需要在相同数据类型的过程中声明一些局部变量,其中可以分配retcode的值。因此,您收到此错误。

您不能将null用作赋值目标,因此您需要在本地声明具有相同数据类型的变量