oracle函数代码:CREATE OR REPLACE FUNCTION X_ZTE_TIME
--(YTIME date)RETURN VARCHAR2 ISTYPE GROUPONE IS VARRAY(300) OF VARCHAR2(23);
AA GROUPONE ;
PT VARCHAR2(20);
BB VARCHAR2 (1);BEGIN
PT:=to_char(sysdate,'yyyy');
IF substr(PT,3,1) =0
THEN
BB:=substr(PT,4,1);
END IF;
IF substr(PT,3,1) <>0
THEN
AA := GROUPONE('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','T','U','V','W','X','Y');
BB:= AA(MOD(MOD(PT,100)-10,22)+1);
END IF;
RETURN (BB);
END;在PL/SQL中执行是没问题的但是在delphi中一调用就出现了:ORA-06553:PLS-306:wrong number or types of arguments in call to ‘X_ZTE_time’不知道到底是哪里出现问题了,求解
--(YTIME date)RETURN VARCHAR2 ISTYPE GROUPONE IS VARRAY(300) OF VARCHAR2(23);
AA GROUPONE ;
PT VARCHAR2(20);
BB VARCHAR2 (1);BEGIN
PT:=to_char(sysdate,'yyyy');
IF substr(PT,3,1) =0
THEN
BB:=substr(PT,4,1);
END IF;
IF substr(PT,3,1) <>0
THEN
AA := GROUPONE('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','T','U','V','W','X','Y');
BB:= AA(MOD(MOD(PT,100)-10,22)+1);
END IF;
RETURN (BB);
END;在PL/SQL中执行是没问题的但是在delphi中一调用就出现了:ORA-06553:PLS-306:wrong number or types of arguments in call to ‘X_ZTE_time’不知道到底是哪里出现问题了,求解
Connected as scott
SQL>
SQL> CREATE OR REPLACE FUNCTION X_ZTE_TIME
2 --(YTIME date)
3
4 RETURN VARCHAR2 IS
5
6 TYPE GROUPONE IS VARRAY(300) OF VARCHAR2(23);
7 AA GROUPONE;
8 PT VARCHAR2(20);
9 BB VARCHAR2(1);
10
11 BEGIN
12 PT := to_char(sysdate, 'yyyy');
13 IF substr(PT, 3, 1) = 0 THEN
14 BB := substr(PT, 4, 1);
15 END IF;
16 IF substr(PT, 3, 1) <> 0 THEN
17 AA := GROUPONE('A',
18 'B',
19 'C',
20 'D',
21 'E',
22 'F',
23 'G',
24 'H',
25 'J',
26 'K',
27 'L',
28 'M',
29 'N',
30 'P',
31 'Q',
32 'R',
33 'T',
34 'U',
35 'V',
36 'W',
37 'X',
38 'Y');
39 BB := AA(MOD(MOD(PT, 100) - 10, 22) + 1);
40 END IF;
41 RETURN(BB);
42 END;
43 /
Function created
SQL>
SQL> select X_ZTE_TIME from dual
2 ;
X_ZTE_TIME
--------------------------------------------------------------------------------
C
SQL>
ORA-06553:PLS-306:wrong number or types of arguments in call to ‘X_ZTE_time’
以我对delphi的粗浅理解就是你把函数当作过程调用了
函数1:CREATE OR REPLACE FUNCTION X_TIME
(QD IN DATE)
RETURN VARCHAR2 IS GROUPONE VARCHAR2(50) DEFAULT 'ABCDEFGHJKLMNPQRTUVWXY';
PT VARCHAR2(50);
A integer;
RESULT VARCHAR2(10);BEGIN
PT := TO_CHAR(QD,'yyyy');
IF substr(PT, 3, 1) = '0' THEN
RESULT:= substr(PT, 4, 1);
END IF;
IF substr(PT, 3, 1) <> '0' THEN
A:=MOD(MOD(to_number(PT),100)-10,22)+1;
RESULT := SUBSTR(GROUPONE,A,1);
END IF;
RETURN(RESULT);
END;函数2:调用上面的函数
CREATE OR REPLACE FUNCTION X_ZTEreturn varchar2 isresult varchar2(10);
begin select sajet.x_time(sysdate) into result from dual;
return(result);
end;外部调用的话,只要返回值是char,就ok ,
但是为什么还是报:ORA-06553:PLS-306:wrong number or types of arguments in call to ‘X_MAC’