سؤال

لدي مشكلة في الدعوة إلى الإجراء الخاص بي. Oracle Scrams

PLS-00306 خطأ: عدد خاطئ من أنواع الوسائط في الاتصال إلى الإجراء.

مع إجراء إعلان النوع الخاص بي ، يحتوي على نفس الإعلان كما هو الحال في الرأس أدناه. إذا قمت بتشغيله كإجراء منفصل ، فهو يعمل ، عندما أعمل في واجهة ODCI لإنشاء فهرس قابل للتمديد ، فإنه يرمي PLS-00306.

MEMBER PROCEDURE FILL_TREE_LVL
     (target_column VARCHAR2, cur_lvl NUMBER, max_lvl NUMBER, 
     parent_rect NUMBER,start_x NUMBER, start_y NUMBER,
     end_x NUMBER, end_y NUMBER) 
IS                          
    stmt VARCHAR2(2000);
    rect_id NUMBER;
    diff_x NUMBER;
    diff_y NUMBER;
    new_start_x NUMBER;
    new_end_x NUMBER;
    i NUMBER;
    j NUMBER;
 BEGIN
{...}   
 END FILL_TREE_LVL;


 STATIC FUNCTION ODCIINDEXCREATE 
   (ia SYS.ODCIINDEXINFO, parms VARCHAR2, env SYS.ODCIEnv) RETURN NUMBER
IS  
  stmt   VARCHAR2(2000);
  stmt2 VARCHAR2(2000);
  min_x NUMBER;
  max_x NUMBER;
  min_y NUMBER;
  max_y NUMBER;
  lvl NUMBER;
  rect_id NUMBER;
  pt_tab VARCHAR2(50);
  rect_tab VARCHAR2(50);
  cnum NUMBER;
  TYPE point_rect is RECORD(
    point_id NUMBER,
    rect_id NUMBER
  );
  TYPE point_rect_tab IS TABLE OF point_rect;
  pr_table point_rect_tab;

  BEGIN

  {...}
  FILL_TREE_LVL('any string', 0, lvl,0, min_x, min_y, max_x, max_y);
  {...}

  END;
هل كانت مفيدة؟

المحلول

ليس لدي أي خبرة في PL/SQL OOP ، لكنني أعتقد أن المشكلة تحدث لأنك تحاول استدعاء إجراء عضو من وظيفة ثابتة. يحتاج إجراء العضو دائمًا إلى سياق كائن ، والذي ينقصه المكالمة.

نصائح أخرى

يبدو أنك تفتقد معلمة ، وربما Parent_Rect أظن:

FILL_TREE_LVL(target_column VARCHAR2,
              cur_lvl NUMBER,
              max_lvl NUMBER,
              parent_rect NUMBER,
              start_x NUMBER,
              start_y NUMBER,
              end_x NUMBER,
              end_y NUMBER)

FILL_TREE_LVL('any string', --target_column
              0, --cur_lvl
              lvl, --max_lvl
              min_x, --parent_rect
              min_y, --start_x
              max_x, --start_y
              max_y  --end_x
                     --end_y ???
             );
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top