我将一些SQL放入Oracle脚本中,如果我运行Vanilla SQL,我会获得一个返回值/记录的正确输出。但是在我的自定义函数中,我得到的值正在返回的次数和记录一样多次。这是我的一个例子。
create function EXAMPLE_FUNCTION (passedID in NUMBER)
return NUMBER
IS
returnValue NUMBER;
BEGIN
SELECT "TABLE1"."ID" INTO returnValue
FROM "TABLE1" WHERE "TABLE1"."ID" = passedID;
RETURN returnValue;
END;
因此,如果TABLE1有20条记录,我将获得ID为1的记录,返回20次, 我不确定它出了什么问题,但我确信它很简单!
答案 0 :(得分:3)
你可能正在调用这样的函数:
select EXAMPLE_FUNCTION (1)
from my_table
在没有from:
的情况下调用它select EXAMPLE_FUNCTION (1)
编辑:
正如Shannon所指出的,Oracle需要from子句,因此我使用dual
表搜索并找到了示例:
select EXAMPLE_FUNCTION (1)
from dual
答案 1 :(得分:2)
只需执行以下操作:SELECT EXAMPLE_FUNCTION(1)FROM dual;
答案 2 :(得分:1)
以下内容会在您的函数中起作用吗?
Select COUNT(*) into returnValue
from TABLE1
where Table1.ID = passedID;
答案 3 :(得分:1)
你对passedID?
使用了什么价值?如果你想让每一行都有不同的东西你需要传递不同的东西。
比较这两个函数调用。首先是固定值:
SQL> select example_function(1) from table1
2 /
EXAMPLE_FUNCTION(1)
-------------------
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
20 rows selected.
SQL>
然后使用table列提供参数:
SQL> select example_function(id) from table1
2 /
EXAMPLE_FUNCTION(ID)
--------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
20 rows selected.
SQL>