根据您使用的工具,您应该检查您遇到的哪个错误。因为,有人应该如何提供帮助?无论使用何种工具,都可以查询user_errors。例如:
SQL> create or replace function f_test return number is
2 begin
3 retval := 1; --> variable isn't declared, so - compilation will fail
4 return retval;
5 end;
6 /
Warning: Function created with compilation errors.
SQL> select line, position, text from user_errors where name = 'F_TEST' order by line, position;
LINE POSITION TEXT
----- --------- --------------------------------------------------
3 3 PLS-00201: identifier 'RETVAL' must be declared
3 3 PL/SQL: Statement ignored
4 3 PL/SQL: Statement ignored
4 10 PLS-00201: identifier 'RETVAL' must be declared
或者,在 SQL*Plus 中:
SQL> show err
Errors for FUNCTION F_TEST:
LINE/COL ERROR
-------- -----------------------------------------------------------------
3/3 PL/SQL: Statement ignored
3/3 PLS-00201: identifier 'RETVAL' must be declared
4/3 PL/SQL: Statement ignored
4/10 PLS-00201: identifier 'RETVAL' must be declared
SQL>
所以,您越早告诉我们出了什么问题,我们就能越早提供帮助。
同时,我创建了您在函数中使用的示例表。一切似乎都很好。
SQL> create table equipe(num_eq number);
Table created.
SQL> create table sanctionner (code_joueur number, type_catron varchar2(10));
Table created.
SQL> create table joueur (code_joueur number, num_eq number);
Table created.
功能:我什么都没改,只是稍微格式化了一下:
SQL> create or replace function cart_jaune(code in equipe.num_eq%type)
2 return integer
3 as
4 nb integer := 0;
5 begin
6 select count(*)
7 into nb
8 from sanctionner s,
9 joueur j
10 where s.code_joueur = j.code_joueur
11 and j.num_eq = code
12 and s.type_catron like '%jaune%';
13
14 return nb;
15 end;
16 /
Function created.
有效吗?
SQL> select cart_jaune(1) from dual;
CART_JAUNE(1)
-------------
0
SQL>
是的,它有效。