如何将记录类型值传递给函数参数

时间:2014-04-02 19:40:02

标签: oracle plsql syntax-error

我可以知道如何将记录类型值传递给函数参数吗?

以下是我的尝试。我在调用“错误的数字或类型的参数......”错误 我已经搜索过,但似乎找不到能帮助我的明确答案。

希望有人能回答。

DECLARE
TYPE attribute_type_record IS RECORD 
(
        name VARCHAR2(100)
       ,value VARCHAR2(400)
       ,ind  integer
);

type attribute_type is table of attribute_type_record index by binary_integer;

sid_att attribute_type;
ret     varchar2(3000);
BEGIN

sid_att(1).name := 'SID_ATTRIBUTES.REFERENCE1';
sid_att(1).value := 'SID_ATTRIBUTES.REFERENCE1';
sid_att(1).ind := '1';

--v_row := sid_attributes_table('SID_ATTRIBUTES.REFERENCE1');

ret := SC$DATA_ENTRY.ins_sid_attributes(sid_att(1).name,
                                        sid_att(1).value,
                                        sid_att(1).ind,
                                        '594191176',
                                        'TEST');

END;


FUNCTION ins_sid_attributes (
      p_sid_attributes_table        sc$data_entry_utilities.attribute_table,
      p_sid_id                      sid_attributes.sid_id%TYPE,
      p_user                   IN   VARCHAR2
   )
      RETURN VARCHAR2
   IS
      error_message   VARCHAR2 (2000);
      v_row           sc$data_entry_utilities.attribute_type;
      empty_row       sc$data_entry_utilities.attribute_type;
      v_order         INTEGER                                := 0;
      v_name          VARCHAR2 (2000);
      cat_table       pkg_utilities.number_table;
-- I did not post the rest of the code of this function since i believe it is irrelevant to the error and to keep it short.                     

提前致谢! 诺斯

1 个答案:

答案 0 :(得分:1)

假设上面显示的INS_SID_ATTRIBUTES程序是您实际尝试呼叫的程序,那么该消息对我来说似乎是合理的。如上所示,INS_SID_ATTRIBUTES需要三个参数:

  1. 一个SC $ DATA_ENTRY_UTILITIES.ATTRIBUTE_TABLE
  2. SID_ATTRIBUTES.SID_ID%TYPE
  3. A VARCHAR2
  4. 但是在通话中你传递了它:

    1. A VARCHAR2
    2. A VARCHAR2
    3. INTEGER
    4. A VARCHAR2
    5. A VARCHAR2
    6. 因此,您将五个参数传递给只接受三个的过程,而您传递的值的类型错误。

      分享并享受。