[PL-SQL] PLS-00306: wrong number or types of arguments ...

Pagina: 1
Acties:

  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 20-05 10:46
Ik heb een package tvl_pck_Shadow waarin ik volgende procedures en functies heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
CREATE OR REPLACE PACKAGE BODY tvl_pck_shadow
AS
  parse_error EXCEPTION;
  PRAGMA EXCEPTION_INIT( parse_error, -20100 );
FUNCTION MLColumnSetString
   ( p_tablename IN VARCHAR2, p_colinfo IN VARCHAR2, p_objectid IN NUMBER )
 RETURN VARCHAR2
  IS
    v_String VARCHAR2(5000) := '';
    v_temp VARCHAR2(32000);
  BEGIN 
         v_String := 'x = ''' ; 
         v_temp := 'Dit is een voorbeeld';
         v_String := v_String || ReplaceCharInString( v_temp, '''', '''''' ) ;
         v_String := v_String || '''';
  RETURN v_String;
  END MLColumnSetString;

  FUNCTION ReplaceCharInString
   ( p_String IN VARCHAR2, p_srchString IN VARCHAR2, p_replaceString IN VARCHAR2 ) 
   RETURN VARCHAR2
  IS
          v_numerOfLoops NUMBER;    
          v_returnValue VARCHAR2(32000);
    
          v_tempString varchar2(255);
  BEGIN
          v_numerOfLoops := MOD(LENGTH(p_String),250);
          FOR i in 0..v_numerOfLoops LOOP
    v_tempString := substr(p_String, 250 * i, 250 * (i + 1));
    v_returnValue := replace( v_tempString, p_srchString, p_replaceString);
          END LOOP;
     RETURN v_returnValue;      
  END ReplaceCharInString;


Wanneer ik deze package probeer te compileren, krijg ik volgende foutmelding:
PLS-00306: wrong number or types of arguments in call to 'ReplaceCharInString'

Wanneer ik het zonder argumenten compileer (en ook een aanroep zonder argumenten), dan compileert hij wel. Van wanneer ik 1 argument gebruik (dus bv alleen v_temp), dan compileert hij niet meer.
Aan de functie ReplaceCharInString is ook niets mis, als ik de code hierin in commentaar zet, compileert hij ook niet.

Dit alles draait op Oracle 8.1.7.

Hebben jullie een gedacht waaraan dit kan liggen?

[ Voor 5% gewijzigd door TrendKiller op 13-01-2004 11:18 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Kan een package wel parameters hebben?

https://fgheysels.github.io/


  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 20-05 10:46
whoami schreef op 13 januari 2004 @ 11:21:
Kan een package wel parameters hebben?
De package heeft toch geen parameters?

Het probleem is de aanroep vanuit de functie MLColumnSetString naar de functie ReplaceCharInString. Om de één of andere duistere reden geeft hij daar aan dat er iets fouts is.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Als ik het probeer dan krijg ik geen errors, waarschijnlijk heb je ergens een typo staan in de code die je gebruikt.

Who is John Galt?


  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 20-05 10:46
Ik heb gevonden wat het probleem was. Het probleem was dat de functie aangeroepen werd voor ze gedeclareerd was. En dan krijg je deze VAGE foutmelding.
Er zijn 2 oplossingen:
- Of je declareert je functie voor je ze gebruikt
- Of je maakt gebruik van forward declarations.

  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Mis je niet een package specification??????

Dus

CREATE OR REPLACE PACKAGE TEST IS
function probeer( p_ift_id in test.ift_id%type )
return varchar;
END MAT_BR_IFT;
/

CREATE OR REPLACE PACKAGE BODY TEST IS
function probeer( p_ift_id in test.ift_id%type )
return varchar
is
begin
null;
end probeer;
END TEST;

  • TrendKiller
  • Registratie: Januari 2001
  • Laatst online: 20-05 10:46
Swa-baldie schreef op 13 januari 2004 @ 13:10:
Mis je niet een package specification??????
Die heb ik er gewoon niet bijgezet :), ze bestaat wel, maar ik had de functie er ook niet in opgenomen. Had ik dat wel gedaan, dan had ik waarschijnlijk het probleem ook niet gehad zie ik nu.

[ Voor 25% gewijzigd door TrendKiller op 13-01-2004 13:46 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Trendkiller schreef op 13 januari 2004 @ 13:45:
[...]


Die heb ik er gewoon niet bijgezet :), ze bestaat wel, maar ik had de functie er ook niet in opgenomen. Had ik dat wel gedaan, dan had ik waarschijnlijk het probleem ook niet gehad zie ik nu.
Klopt, ik had hem wel opgenomen en dat werkte :)

Who is John Galt?

Pagina: 1