函数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’
(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’
SQL> ed
已写入 file afiedt.buf 1 CREATE OR REPLACE FUNCTION X_TIME
2 (QD IN DATE)
3 RETURN VARCHAR2 IS
4 GROUPONE VARCHAR2(50) DEFAULT 'ABCDEFGHJKLMNPQRTUVWXY';
5 PT VARCHAR2(50);
6 A integer;
7 RESULT VARCHAR2(10);
8 BEGIN
9 PT := TO_CHAR(QD,'yyyy');
10 IF substr(PT, 3, 1) = '0' THEN
11 RESULT:= substr(PT, 4, 1);
12 END IF;
13 IF substr(PT, 3, 1) <> '0' THEN
14 A:=MOD(MOD(to_number(PT),100)-10,22)+1;
15 RESULT := SUBSTR(GROUPONE,A,1);
16 END IF;
17 RETURN(RESULT);
18* END;
19 /函数已创建。SQL> ed
已写入 file afiedt.buf 1 CREATE OR REPLACE FUNCTION X_ZTE
2 return varchar2 is
3 result varchar2(10);
4 begin
5 select sajet.x_time(sysdate) into result from dual;
6 return(result);
7* end;
8 /警告: 创建的函数带有编译错误。SQL> show err
FUNCTION X_ZTE 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------------
5/2 PL/SQL: SQL Statement ignored
5/9 PL/SQL: ORA-00904: "SAJET"."X_TIME": 标识符无效
SQL> ed
已写入 file afiedt.buf 1 CREATE OR REPLACE FUNCTION X_ZTE
2 return varchar2 is
3 result varchar2(10);
4 begin
5 select x_time(sysdate) into result from dual;
6 return(result);
7* end;
SQL> /函数已创建。SQL> select x_zte from dual;X_ZTE
-------------------------------------------------------------------------------
--------------------
CSQL>
不好意思,报的错误是ORA-06553:PLS-306:wrong number or types of arguments in call to ‘X_ZTE’老报错误类型,不知道为什么